日志是每个项目中必不可少的,通过日志的分析,可以方便用户了解系统或软件、应用的运行情况,从而帮助我们完善系统。
目前功能比较全面的第三方PHP开源日志框架有Monolog、SeasLog、log4php等,其中以log4php最为著名,设计精良、格式完美、文档完善、功能强大;Monolog功能较全而且易于扩展,被集成在很多PHP开源框架之中;SeasLog功能也很强大并且有着C语言般的卓越性能,而且是国人所创。当然还有很多小巧实用的开源日志框架,如KLogger,简单易用,很适合小项目中使用。
Monolog
Monolog是php下比较全又容易扩展的记录日志组件。目前有包括Symfony 、Laravel、 CakePHP等诸多知名php框架都内置了Monolog。
Monolog可以把你的日志发送到文件,sockets,收件箱,数据库和各种web服务器上。一些特殊的组件可以给你带来特殊的日志策略。
每个Logger实例都有一个通道和日志处理器栈。每当你添加一条日志记录,它会被发送到日志处理器栈。 你可以创建很多Logger,每个Logger定义一个通道(db,请求,路由),每个Logger有很多日志处理器。这些通道会过滤日志。
每个日志处理器都有一个Formatter(内置的日志显示格式处理器)。你还可以设定日志级别。
日志级别
– DEBUG:详细的debug信息
– INFO:感兴趣的事件。像用户登录,SQL日志
– NOTICE:正常但有重大意义的事件。
– WARNING:发生异常,使用了已经过时的API。
– ERROR:运行时发生了错误,错误需要记录下来并监视,但错误不需要立即处理。
– CRITICAL:关键错误,像应用中的组件不可用。
– ALETR:需要立即采取措施的错误,像整个网站挂掉了,数据库不可用。这个时候触发器会通过SMS通知你。
SeasLog
SeasLog是用C语言编写的PHP扩展库,功能强大而且性能极高,但是需要把它集成配置到php.ini,使用之前的准备工作稍有些烦琐。
SeasLog功能非常丰富,基本能满足大项目日志系统的各项需求
– 分模块、分级别
– 配置简单
– 日志格式清晰易读
– 应用简单、性能很棒
– 便捷、规范的log记录
– 高效的海量log分析
– 可配置、多途径的log预警
– 可配置的默认log目录与模块
– 指定log目录与获取当前配置
– 初步的分析预警框架
– 高效的日志缓冲、便捷的缓冲debug
– 遵循 PSR-3 日志接口规范
– 自动记录错误信息
– 自动记录异常信息
– 连接TCP端口发送
– 连接UDP端口发送
seaslog的安装
//1.下载扩展
wget http://pecl.php.net/get/SeasLog-1.6.8.tgz
//2.解压文件
tar -zxvf SeasLog-1.6.8.tgz
//3.编译
phpize 产生一个configure文件
//4. 检测
./configure--with-php-config=/usr/bin/php-config
//--with-php-config 自己的配置文件
//5. 安装
make && make install
//6. 在php.ini文件中配置SeasLog信息
extension=seaslog.so
//其他参数也可以进行配置,需要的可以查看官网进行相应的配置
easlog.default_basepath
= /var/log/
seaslog.default_logger
= default
seaslog.disting_type
= 1
seaslog.disting_by_hour
= 1
seaslog.use_buffer
= 1
seaslog.buffer_size
= 100
seaslog.level
= 0
seaslog.trace_error
= 1
seaslog.trace_exception
= 0
seaslog.default_datetime_format
= "%Y:%m:%d %H:%M:%S"
//7.重启服务器
service nginx reload
or
service php-fpm reload
个人观点:
Monolog:大项目首选推荐,基本需要的功能都有。
SeasLog:如果你特别在意日志的性能问题,并且不嫌组件库配置麻烦,就选择SeasLog,大项目中可以尝试,小项目就算了,别折腾。
Log4php:不推荐使用,官方基本已经不更新了,如果你非常熟悉log4j,倒是可以尝试使用。
KLogger:如果你只需要记录一下debug、info、notice之类的信息而不需要做其它进一步处理,强烈推荐KLogger。