Chinaunix首页 | 论坛 | 博客
  • 博客访问: 915585
  • 博文数量: 194
  • 博客积分: 7991
  • 博客等级: 少将
  • 技术积分: 2067
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-09 22:03
文章分类

全部博文(194)

文章存档

2010年(8)

2009年(71)

2008年(109)

2007年(6)

我的朋友

分类: C/C++

2008-01-04 17:34:12

 
在编写php extension module的时候,由于模块由php页面调用,如果用zend_printf输出调试信息的话,这些信息会打印到用户端的浏览器上,搞乱显示效果。
 
由于php模块没有控制台,所以信息也不能输出到console上,于是我想到了syslog,将调试信息以syslog的形式输出,就可以解决问题了。
 
syslog使用起来比较简单,首先调用openlog准备输出,然后调用syslog进行记录,最后调用closelog关闭。
 
在头文件中定义了调试函数:
 

/*
 * debug porpuse
 */

#ifdef IPS_TEST
#define ips_debug(fmt, arg...)    syslog(LOG_CRIT, "[ips-php] %s, %s, %d : "fmt"\n", __FILE__, __FUNCTION__, __LINE__, ##arg)
#else
#define ips_debug(fmt, arg...)
#endif

在模块的初始化和清理函数中分别调用openlog和closelog:

#ifdef IPS_TEST
openlog("ips-php", LOG_PID, LOG_USER);
#endif
//......

#ifdef IPS_TEST
closelog();
#endif

调试信息最终被保存到了/var/log/messages文件中,可以用tail命令实时跟踪:

#tail -f /var/log/message |grep ips-php

这样,当有调试信息时,控制台就会有实时显示。

sxg

 

 

阅读(1462) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~