在编写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) |