apix / log
简约、轻薄且快速的PSR-3兼容(多桶)日志记录器。
1.3.0
2022-10-05 19:12 UTC
Requires
- php: >=8.0
- psr/log: ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^8.0|^9.0
Suggests
- PHPMailer/apix-log-phpmailer: Allow sending log messages via PHPMailer
- apix/log-tracker: Allow sending log messages to logger/tracker such as Google Analytics, Dashbot, etc.
- jspalink/apix-log-pushover: Allow sending log messages via Pushover
Provides
- psr/log-implementation: ^1.0
README
APIx Log,非常轻薄的PSR-3日志记录器
简约且快速的PSR-3兼容日志记录器。
- 轻量级,开箱即用的包装,包含以下包装器
- 可扩展,提供额外的日志后端
- PHPMailer/apix-log-phpmailer ~ 使用PHPMailer发送日志,
- jspalink/apix-log-pushover ~ 使用Pushover发送日志,
- apix/log-tracker ~ 添加Google Analytics、Dashbot等日志/跟踪器,
- 更多贡献将在此处链接。
- 干净的API,请参阅
LoggerInterface
和LogFormatterInterface
。 - 100%单元测试,符合PSR0、PSR1和PSR2。
- 持续集成 对 7.0、8.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`
此简单日志记录器现在设置为拦截 critical
、alert
和 emergency
日志。
要记录一个事件,请使用
$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
文件。