8ctopus/apix-log

简约、轻薄且快速,符合PSR-3规范的(多桶)记录器。

3.0.7 2023-12-28 11:40 UTC

README

packagist downloads min php version license tests code coverage badge lines of code

此项目是从APIx Log分离出来的分支,因为我想要添加原始版本中没有的功能和错误修复。

简约且快速的符合PSR-3规范的记录器。

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

安装

  composer require 8ctopus/apix-log

基本用法

此简单的记录器设置为拦截所有日志并在控制台显示。

$console = (new Apix\Log\Logger\Stream('php://stdout'))
   ->setMinLevel('debug')
   ->setFormat(new Apix\Log\Format\ConsoleColors())
   ->notice('Running out of {items}', 'Running out of {items} - left {left}', [
      'items' => 'beers',
      'left' => 5,
   ]);

[2023-03-20 08:01:25] NOTICE 烈酒不足 - 剩余5瓶

高级用法 ~ 多日志分发器

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

$file = (new Apix\Log\Logger\File(__DIR__ . '/app.log'))
   // intercept logs that are >= `warning`
   ->setMinLevel('warning')
   // propagate to other loggers
   ->setCascading(true)
   // postpone writing logs to file
   ->setDeferred(true)
   // flush logs to file once 100 logs are collected
   ->setDeferredTrigger(100);
  • setCascading()设置为true(默认:true),因此捕获的条目将继续流经特定记录器。
  • setDeferred()被设置为true(默认:false),因此处理发生在
    • setDeferredTrigger达到时
    • flushDeferredLogs被调用时
    • __destruct(脚本结束通常)

现在,让我们创建一个主记录器对象并将前两个记录器注入其中。

$logger = new Apix\Log\Logger([$console, $file]);

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

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

// handled by all loggers
$logger->critical('OMG saw {bad-exception}', ['bad-exception' => $exception]);

// push an object (or array) directly
$logger->error($exception);

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

日志级别

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

许可证

APIx Log 在新BSD许可证下授权 - 请参阅 LICENSE.txt 以获取完整的许可证详情。

待办事项

  • 仅比较日志条目与主分支
  • 如果更快,则仅在分支中修复示例颜色(仅日志条目)
  • Logger 应该继承自 AbstractLogger 吗?
  • 为电子邮件添加 HTML 格式化
  • 更改上下文日志
  • 添加日志行吗?