http://hi.baidu.com/qiaoyuetian/blog/item/a3e6de4cbad8b9f0d62afc64.html
使用log4php 的 debug 你的php程序
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=error, default
//log4php.rootLogger=warn, default
//log4php.rootLogger=info, default
log4php.rootLogger=debug, default
#Eof:-----------------
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=error, A2
//log4php.rootLogger=warn, A2
//log4php.rootLogger=info, A2
//log4php.rootLogger=debug, A2
$GLOBALS['log'] = LoggerManager::getLogger('project');
190 if ( !empty($className) and ($className == 'logger' or get_parent_class($className) == 'logger') )
190 if ( !empty($className) and ($className == 'logger' or $className == 'loggercategory' or get_parent_class($className) == 'logger') or get_parent_class($className) == 'loggercategory')
===============================================================
log4php0.9的详细配置实例说明
一、什么是log4php:
程序非常简单,来看看各处标记的作用: 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的配置文件!好,我这里有一个简单的配置文件,代码如下:
先不用管这些代码是什么意思,在app目录中新建立一个log4php.properties文件,然后将以上的代码拷贝至这个文件里,保存。 注意: 1. 这个文件的文件名必须是log4php.properties,不要写错 2. 这个文件必需与index.php同级,也就是在app目录下 OK,执行完这一步继续执行http://localhost/test1.php, 这时我们将会看到这样的代码:
看到这里,有人就会说了,为什么上边会有两个注意的地方?我想把文件名改成log4.txt, 同时为了方便我还要把它的位置放在另一个地方,比如我的项目中有一个专门的配置文件目录config/,我想把log4.txt放在config/目录 中, OK, 可以, 如果你这样做了,那么在test1.php中还需要在1处后边加一条语句:
这里要说明的一定,因为log4php的属性文件采用的是properties格式,这种格式在JAVA中一般的扩展名 为.properties, 因此我们还是将log4.txt的扩展名修改为log4.properties, 这样更符合习惯一些。log4php也支持XML格式定义的配置文件,不过一般说来XML文件的可读性较差,我在这里就统一使用properties格式 的配置文件了。 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" 从第二个参数起的别名,具体目的地的设置方式由:
来实现,每种输出目的地都有不同的设置参数,根据实际需要,输出的目的地可有多项,表现如下: log4php.rootLogger=DEBUG, A1, A2, A3, .... 其中A1, A2, A3代表不同的输出目的地。 3. 日志文件输出格式。它作为输出目的地的一个属性存在,log4php上包含5种不同的输出方式,分别为:
这里所谓的高级使用也就是log4php中的配置文件的使用,所有的高级功能都要由配置文件来完成,我每讲一个功能的使 用,都有一个示例文件,大家可以边看教程边进行调试, 在这里我将以几种常见的输出目的地为例进行讲解,详细的内容大家可以查看log4php解压目录里的test目录。 1. LoggerAppenderEcho:定义方式:
log4php.appender是固定格式,A1代表输出地的别名,log4php.appender.A1为输出 地,这里为直接回显,log4php.appender.A1.layout定义直接回显时的格式,在这里取值可以是5种输出格式, 当前设置表示使用HTML来输出DEBUG信息,当A1的layout配置为LoggerLayoutHtml后,它还有两个附加参数可定义(请记住:这 里的参数指的是为LoggerLayoutHmtl设置为不是为LoggerAppenderEcho,是为输出格式设置参数而不是为输出目的地设置参 数),分别为: 1. locationInfo: 输出本地信息,值为boolean 2. title:输出html的标题名,也就是输出HTML中的<title></title>中的名称, 字符串 完整配置示例如下:
本节实例为log_echo.php. |