PEAR LOG日志系统

在健壮的软件体系里面,日志扮演着十分重要的角色。日志系统设计的好坏,直接影响到软件运行的可靠性。PEAR的LOG是一个小巧实用的日志系统,可以将日志记录到文件、数据库、系统日志,或输出到控制台。

简单的例子

include 'Log.php';
$log = Log::singleton("file" , HOME_DIR.'/var/logs/feedbowl.log');
$log->debug("check it out");
$log->warning("you have a emergency");
$log->err("something terrible happened");
$log->info("再见");



记录的日志内容:

Jan 15 16:42:05  [debug] check it out
Jan 15 16:42:05  [warning] you have a emergency
Jan 15 16:42:05  [error] something terrible happened
Jan 15 16:42:05  [info] 再见

高级用法
完整的 singleton
object Log singleton( string $handler, [string $name = ''], [string $ident = ''], [array $conf = array()], [int $level = PEAR_LOG_DEBUG])



string   $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());

完整代码

include 'Log.php';
$logfile = HOME_DIR. '/var/logs/feedbowl-'.date( 'YW' , time()).'.log' ;
$conf = array(
       'locking' => 1
);
$log = Log:: singleton("file" , $logfile, 'DEMO', $conf, PEAR_LOG_INFO);
$log->debug( "check it out");
$log->warning( "you have a emergency");
$log->err( "something terrible happened");
$log->info( "再见");

日志内容:
Jan 15 18:09:15 DEMO [warning] you have a emergency
Jan 15 18:09:15 DEMO [error] something terrible happened
Jan 15 18:09:15 DEMO [info] 再见


你可能感兴趣的:(PHP,PHP,PHP,log,log,log,日志)