使用log4php 的 debug 你的php程序
2009-08-06 16:21
495 查看
http://hi.baidu.com/qiaoyuetian/blog/item/a3e6de4cbad8b9f0d62afc64.html
而log4php就是专门给php deug用的。
使用非常方便。
----------------------项目地址
http://logging.apache.org/log4php/
-----------------------
使用的话:
1 建立一个log4php.properties文件,文件内容:
#Bof:-----------------适用于0.9beta
log4php.appender.default=LoggerAppenderRollingFile
log4php.appender.default.MaxFileSize=10MB
log4php.appender.default.MaxBackupIndex=5
log4php.appender.default.layout=LoggerPatternLayout
log4php.appender.default.File=./project.log
log4php.appender.default.layout.ConversionPattern="%d %-5p: %m (%F:%L)%n"
//log4php.rootLogger=fatal, default
//log4php.rootLogger=error, default
//log4php.rootLogger=warn, default
//log4php.rootLogger=info, default
log4php.rootLogger=debug, default
#Eof:-----------------
如果是0.8beta,可以采用以下
#Bof:0.8---------------
log4php.appender.A2=LoggerAppenderRollingFile
log4php.appender.A2.MaxFileSize=10MB
log4php.appender.A2.MaxBackupIndex=5
log4php.appender.A2.layout=LoggerLayoutTTCC
log4php.appender.A2.layout.ContextPrinting="true"
log4php.appender.A2.layout.DateFormat="%c"
log4php.appender.A2.File=./c3crm.log
log4php.rootLogger=fatal, A2
//log4php.rootLogger=error, A2
//log4php.rootLogger=warn, A2
//log4php.rootLogger=info, A2
//log4php.rootLogger=debug, A2
#Eof:0.8---------------
2 根据自己的需要在debug页面中加入
require_once('log4php/LoggerManager.php');
$GLOBALS['log'] = LoggerManager::getLogger('project');
然后就可以直接使用 $GLOBALS['log']的debug,info,warn,error等方法来debug你的程序。
3 至于察看,可以使用tail -f project.log | grep DEBUG/INFO/WARN等来察看相关的内容。
注意:0.9版本中有个错漏的地方,如果使用以上的properties设置,你会发现文件位置和行数显示的时候为 NA:NA,原因是代码中有错漏,只需要修改
log4php/spi/LoggerLocationInfo.php 189和190行
189 $className = @$hop['class'];
190 if ( !empty($className) and ($className == 'logger' or get_parent_class($className) == 'logger') )
更改为以下:
189 $className = @strtolower($hop['class']);
190 if ( !empty($className) and ($className == 'logger' or $className == 'loggercategory' or get_parent_class($className) == 'logger') or get_parent_class($className) == 'loggercategory')
即可显示你所需要的东西,非常方便,非常傻瓜化:)
===============================================================
什么是log4php
2009-07-15 20:29
使用log4php 的 debug 你的php程序
使用java的人估计都知道log4j(我只是听过,虽然appfuse中集成了,但是没有去探究过)而log4php就是专门给php deug用的。
使用非常方便。
----------------------项目地址
http://logging.apache.org/log4php/
-----------------------
使用的话:
1 建立一个log4php.properties文件,文件内容:
#Bof:-----------------适用于0.9beta
log4php.appender.default=LoggerAppenderRollingFile
log4php.appender.default.MaxFileSize=10MB
log4php.appender.default.MaxBackupIndex=5
log4php.appender.default.layout=LoggerPatternLayout
log4php.appender.default.File=./project.log
log4php.appender.default.layout.ConversionPattern="%d %-5p: %m (%F:%L)%n"
//log4php.rootLogger=fatal, default
//log4php.rootLogger=error, default
//log4php.rootLogger=warn, default
//log4php.rootLogger=info, default
log4php.rootLogger=debug, default
#Eof:-----------------
如果是0.8beta,可以采用以下
#Bof:0.8---------------
log4php.appender.A2=LoggerAppenderRollingFile
log4php.appender.A2.MaxFileSize=10MB
log4php.appender.A2.MaxBackupIndex=5
log4php.appender.A2.layout=LoggerLayoutTTCC
log4php.appender.A2.layout.ContextPrinting="true"
log4php.appender.A2.layout.DateFormat="%c"
log4php.appender.A2.File=./c3crm.log
log4php.rootLogger=fatal, A2
//log4php.rootLogger=error, A2
//log4php.rootLogger=warn, A2
//log4php.rootLogger=info, A2
//log4php.rootLogger=debug, A2
#Eof:0.8---------------
2 根据自己的需要在debug页面中加入
require_once('log4php/LoggerManager.php');
$GLOBALS['log'] = LoggerManager::getLogger('project');
然后就可以直接使用 $GLOBALS['log']的debug,info,warn,error等方法来debug你的程序。
3 至于察看,可以使用tail -f project.log | grep DEBUG/INFO/WARN等来察看相关的内容。
注意:0.9版本中有个错漏的地方,如果使用以上的properties设置,你会发现文件位置和行数显示的时候为 NA:NA,原因是代码中有错漏,只需要修改
log4php/spi/LoggerLocationInfo.php 189和190行
189 $className = @$hop['class'];
190 if ( !empty($className) and ($className == 'logger' or get_parent_class($className) == 'logger') )
更改为以下:
189 $className = @strtolower($hop['class']);
190 if ( !empty($className) and ($className == 'logger' or $className == 'loggercategory' or get_parent_class($className) == 'logger') or get_parent_class($className) == 'loggercategory')
即可显示你所需要的东西,非常方便,非常傻瓜化:)
===============================================================
什么是log4php
2009-07-15 20:29
log4php0.9的详细配置实例说明 一、什么是log4php: log4j在JAVA中可算是大名鼎鼎的日志开发包了,它为apche组织维护项目,VxR兄使用php来实现了log4j的功能, 目前log4php已经作为log4j的一个子项目存在,详细信息可点击:http://logging.apache.org/log4php/进行查 看,另外VxR兄的log4php官方主站为:http://www.vxr.it/log4php/,有兴趣的朋友可直接点上边两个网址查看详细信息。 下载地址:http://www.vxr.it/log4php/download.html 二、安装: 本文下载版本为log4php-0.9.tar.gz, 解压后目录中有src目录,将{解压目录}/src/log4php/目录拷贝至你的项目目录,完成安装。因为本文是用来讲解log4php的, 所以不相关目录都不列出来,把它定义为http://localhost, 项目结构图如下: +app/ + log4php + images/ + logs/ + js/ + css/ - log4php.properties - index.php 三、开始使用: 先从最简单的来,先来看看test1.php中的内容:
1. 定义LOG4PHP_DIR目录名为log4php, 也就是我们目录结构中的log4php目录 2. 包含LoggerManager.php, 它是我们在程序中主要用到的类,通过它的getLogger()静态方法取得一个logger类,在第5处时使用这个类 3. 定义一个字串$str, 用来测试,在第6与第7处使用条件判断来产生logger的debug信息。 4. 这里代表着你的PHP输出,为了区别PHP程序输出与logger输出信息的不同,在这里先输出一条信息。 5. 通过LoggerManager类的getLogger()静态方法取得一个logger类,它的参数一般为类名,这个信息用来区别不同的logger记 录,在这里我们只用到了一个测试类,因此这个名称我们可以定义为test, 当然你也可以定义为test1, test2... 6. 如果$str不为空则输出一条调试信息 7. 如果$str的长度超过4输出一条调试信息 OK,现在我们来执行一下http://localhost/test1.php. 不对,只有4处输出的语句而没有调试信息!怎么回事?原因是我们还没有设置log4php的配置文件!好,我这里有一个简单的配置文件,代码如下:
注意: 1. 这个文件的文件名必须是log4php.properties,不要写错 2. 这个文件必需与index.php同级,也就是在app目录下 OK,执行完这一步继续执行http://localhost/test1.php, 这时我们将会看到这样的代码:
OK,高级的东西我们放到下边去看,我们来看执行后的页面,好像很简单一样,与echo 没什么两样,好,我们先不用知道为什么,先将log4.properties中的最后一条log4php.appender.A1.layout的值由 LoggerLayoutSimple改为LoggerLayoutHtml, 保存后再执行http://localhost/test1.php看看,哈哈,现在是不是感觉舒服一些了?也对得起这自己花这么长时间来看这个东西了。 后边所谓的高级使用也就是来详细说明这个配置文件的使用的。通过配置文件,我们可以使用一些更高级的功能,例如将日志写成文件等。 四、高级使用: Log4php由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将附加到执行文件尾还是文件中;而输出格式则控制了日志信息 的显示内容。 1. 日志的优先级,日志信息有四种分类(常用),可以通过在在配置文件中设置优先级来将代码中出现的调试信息显示或隐藏,举例来讲,当我把日志等级调整至 WARN级时,那么程序中所出现的ERROR信息(通过$log->error("error message here!"))及WARN等级的信息可以记录出来,而程序中所有使用INFO与DEBUG级的信息都将不显示,它由 "log4php.rootLogger=DEBUG, A1"中rootLogger的第一个参数定义,这一句的意思是将调试等级定义为DEBUG级,也就是说程序中所有的ERROR, WARN,INFO, DEBUG信息都可以显示出来, 如果将等级设置为INFO, 那么只能有ERROR, WARN, INFO这三种信息可显示。 以下是常用四种等级的用法: DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。 INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。 WARN level表明会出现潜在错误的情形。 ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。 FATAL level指出每个严重的错误事件将会导致应用程序的退出。 2. 日志信息的输出目的地。在log4php中输出目的地支持12种,分别为:
log4php.rootLogger=DEBUG, A1, A2, A3, .... 其中A1, A2, A3代表不同的输出目的地。 3. 日志文件输出格式。它作为输出目的地的一个属性存在,log4php上包含5种不同的输出方式,分别为:
1. LoggerAppenderEcho:定义方式:
1. locationInfo: 输出本地信息,值为boolean 2. title:输出html的标题名,也就是输出HTML中的<title></title>中的名称, 字符串 完整配置示例如下:
转自:http://hi.baidu.com/gongbao/blog/item/77a08f2b9bce9dfce7cd40ec.html |
相关文章推荐
- CI中使用log4php调试程序
- CI中使用log4php调试程序
- 使用Xdebug调试和优化PHP程序[1]
- 使用Xdebug调试PHP程序
- myEclipse中使用debug调试程序方法
- PHP中调试函数debug_backtrace的使用示例代码
- 怎样在Eclipse中使用debug调试程序?
- 使用PHP程序直接调用文本文件的内容
- php表单提交程序的安全使用方法第1/2页
- 如何使用Eclipse PDT调试PHP程序
- 使用PHP脚本来写Daemon程序
- 在IIS7.5下使用php运行exe程序的总结
- PHP开源网站程序如何使用的更好
- 使用xdebug调试PHP程序
- [转]如何在Windows下使用WebMatrix+IIS开发PHP程序
- 使用Xdebug调试和优化PHP程序[2]
- 使用Xdebug调试和优化PHP程序[1]
- 使用Xdebug调试和优化PHP程序
- 使用Xdebug调试和优化PHP程序[3]
- 怎样在Eclipse中使用debug调试程序?