thinkphp配置log4php
来源:互联网 发布:新密传挂机软件 编辑:程序博客网 时间:2024/06/07 11:36
log4php
log4php作为apache维护的项目, 是apache为PHP制定的日志输出工具。目前log4php已经作为log4j的一个子项目存在。利用log4php我们能很好的管理日志信息。
下载:
log4php官网下载地址
官方文档API
最新版本为2.3.0, 笔者这里采用的也是这个版本。
目录结构
解压后定位到 该目录的 src/main/php 下, 将该目录下的所有文件复制到你的项目中, 即你项目中的thinkphp框架下的Library/Vendor下, 新建文件夹log4php, 我的如下所示:
由于log4php的所有文件都以.php为类文件后缀,也没用采用命名空间的话, 故可以把该第三方包放在框架的Vendor目录下, 方便使用vendor 函数引入。
配置
在你的项目根目录下建立log4php的配置文件, 该处采用xml的方式经行配置, .properties的方式官方也弃用在后期版本也不承认更新。
This format has been deprecated. Support will not be removed for the foreseeable future, however it may not be updated to include newly introduced features. It is recommended that you use either the XML or PHP configuration format.
我的配置文件如下: log4php.xml
<?xml version="1.0" encoding="UTF-8"?><configuration xmlns="http://logging.apache.org/log4php/"> <!-- 标准控制台输出的appender --> <appender name="STDOUT" class="LoggerAppenderConsole"> <param name="threshold" value="debug"/> <layout class="LoggerLayoutPattern" > <param name="conversionPattern" value="[%date{Y-m-d H:i:s,u}] [%t] %-5p %l - %message%newline%ex"/> </layout> </appender> <!-- 记录所有ERROR日志的appender --> <appender name="ERROR-ALL" class="LoggerAppenderDailyFile"> <layout class="LoggerLayoutPattern" > <param name="conversionPattern" value="[%date{Y-m-d H:i:s,u}] [%t] %-5p %l - %message%newline%ex"/> </layout> <param name="file" value="log/php-error.log.%s" /> <param name="threshold" value="error"/> <param name="append" value="true" /> <param name="datePattern" value="Y-m-d" /> </appender> <!-- 输出debug级别的信息, 这个一般不用写入到文件 --> <!-- 记录所有DEBUG日志的appender <appender name="DEBUG-ALL" class="LoggerAppenderDailyFile"> <layout class="LoggerLayoutPattern" > <param name="conversionPattern" value="[%date{Y-m-d H:i:s,u}] [%t] %-5p %l - %message%newline%ex"/> </layout> <param name="file" value="log/php-debug.log.%s" /> <param name="threshold" value="debug"/> <param name="append" value="true" /> <param name="datePattern" value="Y-m-d" /> </appender>--> <!-- 记录所有INFO日志的appender --> <appender name="INFO-ALL" class="LoggerAppenderDailyFile"> <layout class="LoggerLayoutPattern" > <param name="conversionPattern" value="[%date{Y-m-d H:i:s,u}] [%t] %-5p %l - %message%newline%ex"/> </layout> <param name="file" value="log/php-info.log.%s" /> <param name="threshold" value="info"/> <param name="append" value="true" /> <param name="datePattern" value="Y-m-d" /> </appender> <root> <level value="info"/> <appender-ref ref="STDOUT"/> <!-- <appender-ref ref="DEBUG-ALL"/>--> <appender-ref ref="INFO-ALL"/> <appender-ref ref="ERROR-ALL"/> </root></configuration>
该博文参考配置checkhere
说明:
Appenders的name为自定义的, class属性为下表所示:
layout配置的是日志输出的方式, log4php提供了5中输出方式。
param配置说明
<param name="file" value="log/php-error.log.%s" /><param name="threshold" value="error"/><param name="append" value="true" /><param name="datePattern" value="Y-m-d" />
测试
在thinkphp默认访问的方法里测试代码, 我的默认访问路径为App/Home/Controller/IndexController.class.php/index
<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller { function _initialize(){ //采用Vendor直接引入log4php目录下的Logger文件 Vendor('log4php.Logger'); //引入配置文件 \Logger::configure(HOME_PATH.'/log4php.xml'); //获取log的对象, 参数是一个名字, 没有时会自动创建, 我传入的是类名 $log = \Logger::getLogger('IndexController'); $log->info('来, 以钱赚钱了'); //$log->warn('来, 以钱赚钱了'); //$log->debug('来, 以钱赚钱了'); //$log->error('来, 以钱赚钱了'); //$log->fatal('来, 以钱赚钱了'); } public function index(){ //$this->display(); }}
项目入口文件
//当前项目据对路径define('HOME_PATH', getcwd() . '/');define("APP_PATH", "./App/");define("RUNTIME_PATH", "./Runtime/");require './think/ThinkPHP.php';
Log4php由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。
日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;
日志信息的输出目的地指定了日志将附加到执行文件尾还是文件中;
而输出格式则控制了日志信息的显示内容。
优先级 由低到高: debug、 info、warn、 error、 fatal, 日志的输出和你的等级设置相关,比如上面的配置文件,root 下的 level = debug那么所有的等级都会出现日志,但是日志文件的数量是不等的
这里我把日志的等级配置成info级别的了
<root> <!-- 制定日志的级别为info --> <level value="info"/> <appender-ref ref="STDOUT"/> <!-- <appender-ref ref="DEBUG-ALL"/>--> <appender-ref ref="INFO-ALL"/> <appender-ref ref="ERROR-ALL"/> </root>
当 level value=”info”设置为info时,由于:优先级由低到高: debug、 info、warn、 error、 fatal 当调用
$log->info('来, 以钱赚钱了'); //会写入日志文件//$log->warn('来, 以钱赚钱了'); //会写入日志文件//$log->debug('来, 以钱赚钱了'); // 不会 写入日志文件//$log->error('来, 以钱赚钱了'); //会写入日志文件//$log->fatal('来, 以钱赚钱了'); //会写入日志文件
即调用:
- debug 不会产生文件,
- info会生成php-info.log***
- warn 生成两个文件:php-debug.log*** php-info.log***
- errror、fatal会产生三个文件:php-debug.log*** php-error.log*** php-info.log***
由于博主该接触log4php不足3个小时, 若有错误或误导之处还请指出, 共求进步!!
博文参考地址
checkhere2
checkhere1
- thinkphp配置log4php
- log4php实用配置
- (转)Log4php使用及配置指南
- php的 log4php 安装配置详解 (附下载地址)
- php的 log4php 安装配置详解 (附下载地址)
- Log4php使用指南
- Log4php使用指南
- log4php安装
- php-log4php
- LOG4PHP使用
- 日志-log4php
- Thinkphp配置
- thinkphp配置
- ThinkPHP配置
- thinkphp配置
- thinkphp配置
- ThinkPHP 配置
- thinkphp配置
- 稀疏表示人脸识别入门文章-《Robust Face Recognition via Sparse Representation》马毅
- cocos2dx移植编译报错
- 什么时候用pop什么时候用dismissViewControllerAnimated
- Android 利用gson将json字符串数组转陈对象的方法
- swift 手势识别
- thinkphp配置log4php
- iOS CoreData查询结果排序
- Apache Spark探秘:利用Intellij IDEA构建开发环境
- 《How Tomcat Works》学习笔记(二)
- OCP-1Z0-051-2015-38题
- Maven移植eclipse项目:Project facet Java version 1.8 is not supported.
- springmvc restful风格支持
- 关于盒子定位
- android开发游记:使用sharepreference存储复杂对象的解决方案