8ctopus / apix-log
简约、轻薄且快速,符合PSR-3规范的(多桶)记录器。
3.0.7
2023-12-28 11:40 UTC
Requires
- php: >=8.1
- psr/log: ^2.0|^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- phpmd/phpmd: ^2.13
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.0|^10.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
Replaces
- apix/log: 1.2.2
This package is auto-updated.
Last update: 2024-08-26 14:39:24 UTC
README
此项目是从APIx Log分离出来的分支,因为我想要添加原始版本中没有的功能和错误修复。
简约且快速的符合PSR-3规范的记录器。
-
轻量级,开箱即用的捆绑包,包含对以下内容的包装器
-
可扩展的,还提供了额外的日志后端
- PHPMailer/apix-log-phpmailer —— 使用PHPMailer发送日志,
- jspalink/apix-log-pushover —— 使用Pushover发送日志,
- apix/log-tracker —— 添加Google Analytics、Dashbot等日志/跟踪器,
-
非常快,并且延迟记录时甚至更快。 在此处查看其与monolog的比较
-
干净的API,请参阅
LoggerInterface
和FormatInterface
。 -
100%单元测试,且符合PSR0、PSR1和PSR2规范。
请随时评论、发送拉取请求和补丁...
安装
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 格式化
- 更改上下文日志
- 添加日志行吗?