apix/log

简约、轻薄且快速的PSR-3兼容(多桶)日志记录器。

1.3.0 2022-10-05 19:12 UTC

This package is auto-updated.

Last update: 2024-09-14 19:52:56 UTC


README

APIx Log,非常轻薄的PSR-3日志记录器 Build Status

Latest Stable Version Total Downloads Build Status Code Quality Code Coverage License

简约且快速的PSR-3兼容日志记录器。

  • 轻量级,开箱即用的包装,包含以下包装器
    • ErrorLogFileMailSapi ~ 基于函数 error_log() 构建,
    • Runtime ~ 作为Array/ArrayObject包装器,和 Nil ~ 作为Null包装器,
    • Stream ~ 日志发送到套接字、本地和远程文件、过滤器和其他类似资源(默认为标准输出绕过输出缓冲)。
  • 可扩展,提供额外的日志后端
  • 干净的API,请参阅LoggerInterfaceLogFormatterInterface
  • 100%单元测试,符合PSR0、PSR1和PSR2。
  • 持续集成7.08.x和HHVM(使用^1.1为旧PHP版本)。
  • 作为Composer PEAR软件包提供。

请随意评论、发送拉取请求和补丁...

🆕 日志分发可以通过 setDeferred() 延迟/累积。

基本用法 ~ 独立

$urgent_logger = new Apix\Log\Logger\Mail('[email protected]');
$urgent_logger->setMinLevel('critical');   // catch logs >= to `critical`

此简单日志记录器现在设置为拦截 criticalalertemergency 日志。

要记录一个事件,请使用

$urgent_logger->alert('Running out of {stuff}', ['stuff' => 'beers']);

高级用法 ~ 多日志分发器

让我们创建一个额外的日志记录器,其目的是捕获严重程度为 warning 或更严重的日志条目——请参阅日志级别的顺序。

$app_logger = new Apix\Log\Logger\File('/var/log/apix_app.log');
$app_logger->setMinLevel('warning')  // intercept logs that are >= `warning`
           ->setCascading(false)     // don't propagate to further buckets
           ->setDeferred(true);      // postpone/accumulate logs processing

setCascading() 被设置为 false(默认为 true),因此捕获的条目不会继续流向特定的日志桶。 setDeferred() 被设置为 true(默认为 false),因此处理发生在 __destruct(通常是脚本的末尾)而不是实时。

现在,让我们创建一个主日志对象并将前两个日志对象注入进去。

// The main logger object (injecting an array of loggers)
$logger = new Apix\Log\Logger( array($urgent_logger, $app_logger) );

让我们再创建一个额外的日志对象——仅用于开发和调试目的。

if(DEBUG) {
  // Bucket for the remaining logs -- i.e. `notice`, `info` and `debug`
  $dev_logger = new Apix\Log\Logger\Stream(); // default to screen without output buffer
  // $dev_logger = new Logger\File('/tmp/apix_debug.log'); 
  $dev_logger->setMinLevel('debug');

  $logger->add($dev_logger);   		// another way to inject a log bucket
}

最后,让我们推送一些日志条目

$e = new \Exception('Boo!');

// handled by both $urgent_logger & $app_logger
$logger->critical('OMG saw {bad-exception}', [ 'bad-exception' => $e ]);

// handled by $app_logger
$logger->error($e); // push an object (or array) directly

// handled by $dev_logger
$logger->info('Testing a var {my_var}', array('my_var' => array(...)));

日志级别

支持 RFC 5424 的八个日志级别,按照级联顺序

安装

使用 Composer 安装当前主要版本(推荐)

composer require apix/log:1.3.*

或者使用以下命令安装最新稳定版本

composer require apix/log

许可证

APIx Log 使用新 BSD 许可证授权——有关完整许可证详情,请参阅 LICENSE.txt 文件。