PEAR LOG日志系统
在健壮的软件体系里面,日志扮演着十分重要的角色。日志系统设计的好坏,直接影响到软件运行的可靠性。PEAR的LOG是一个小巧实用的日志系统,可以将日志记录到文件、数据库、系统日志,或输出到控制台。
简单的例子
Jan 15 16:42:05 [debug] check it outJan 15 16:42:05 [warning] you have a emergencyJan 15 16:42:05 [error] something terrible happenedJan 15 16:42:05 [info] 再见
高级用法完整的singletonstring $handler — 日志保存类型,可选择 'console', 'syslog', 'sql', 'file', and 'mcal'.string $name — 保存位置,文件日志路径,或者数据表名称,或指定其他位置。默认位置取决于选择哪种日志类型。string $ident — 日志签名,可以理解为分类array $conf — 其他设置,用关联数组表示int $level — 记录的级别,只记录不低于这个级别的事件,默认是PEAR_LOG_DEBUG。其他级别从低到高有:PEAR_LOG_NONE,
PEAR_LOG_ALL,
PEAR_LOG_DEBUG, PEAR_LOG_INFO, PEAR_LOG_NOTICE, PEAR_LOG_WARNING, PEAR_LOG_ERR, PEAR_LOG_CRIT,PEAR_LOG_ALERT, PEAR_LOG_EMERG
日志级别在开发阶段,可以把级别设置为PEAR_LOG_DEBUG,在产品阶段再调为PEAR_LOG_INFO,则所有Log::debug()将被忽略。
文件锁在并行环境中(如web访问),可能有多个线程同时请求日志写操作,可能破坏内容的格式。将$conf[ 'locking' ]设置为1,则一个时间只有一个线程可以写日志,其他线程进入阻塞等待。
自动截断PEAR LOG不支持rotating,如果选的是文件日志,只好自己动手去做日志截断。在开启了$conf['locking']的情况下,不建议通过系统命令去截断日志文件。我们可以用当前日期作为日志保存路径,例如,将一周的日志放在一个文件里$logfile = 'logs/mylog-'.date('YW', time());
完整代码Jan 15 18:09:15 DEMO [warning] you have a emergencyJan 15 18:09:15 DEMO [error] something terrible happenedJan 15 18:09:15 DEMO [info] 再见