spazzmarticus / monolog-batchstreamhandler
一次性将一批记录推送到流中。
3.0.0
2022-09-14 09:28 UTC
Requires
- php: >=8.1
- monolog/monolog: ^3
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-14 13:45:40 UTC
README
A Monolog 处理器,它接受一批记录并将它们一次性推送到流中。
(使用 ^2.0 或 Monolog ^2.0 和 ^1.0 对应 Monolog ^1.x)
原因
当对 Web 服务器进行日志记录调用时,我喜欢将一个调用的所有日志记录分组在一起。我将默认的 StreamHandler
改为只处理记录批次(handleBatch
)并将它们一次性写入到流中——就这样,出现了 BatchStreamHandler
。
安装
使用以下命令安装
composer require spazzmarticus/monolog-batchstreamhandler
用法
use SpazzMarticus\BatchStreamHandler\BatchStreamHandler; use Monolog\Handler\BufferHandler; use Monolog\Logger; $batchStreamHandler = new BatchStreamHandler('supsi-looking.log'); //Optional - Envelop the records with head and foot lines $batchStreamHandler->pushHeadLine('-------'); $batchStreamHandler->pushFootLine('======='); $bufferHandler = new BufferHandler($batchStreamHandler); $logger = new Logger('supsi'); $logger->pushHandler($bufferHandler); //PewPew - Do your stuff here
StreamHandler
与 BatchStreamHandler
默认的 StreamHandler
会立即将每条记录推送到流中。即使放在 BufferHandler(它将记录缓存在 flush()
被调用之前)之后,每条记录也会单独处理并写入到流中。
假设有三个并行调用到 Web 服务器 A
、B
、C
。
------------------- Time ------------------->
A --[Debug]------[Notice]--------[Error]---|
B -[Warning][Warning]---------------|
C -----[Notice][Error]------------------------|
日志看起来像这样
Warning
Debug
Notice
Warning
Error
Notice
Error
这使得查看特定调用发生的事情变得困难。
使用 BatchStreamHandler
的日志看起来像这样
Warning
Warning
Debug
Notice
Error
Notice
Error
这仍然不是很好,所以我添加了头部和尾部行进行封装。
现在这看起来就像我可以工作的日志了
-------
Warning
Warning
=======
-------
Debug
Notice
Error
=======
-------
Notice
Error
=======