creitive / monolog-extra-data-processor
为Monolog添加任意日志数据的处理器
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- scrutinizer/ocular: ^1.1
- squizlabs/php_codesniffer: ^2.3
This package is auto-updated.
Last update: 2024-09-07 21:41:16 UTC
README
Monolog的处理器,允许轻松地将任意数据添加到所有日志条目中。
安装
通过Composer
$ composer require creitive/monolog-extra-data-processor
用法
你可以做类似这样的事情(显然,你传入的数据取决于你的需求)
$extraDataProcessor = new ExtraDataProcessor([ 'environment' => getenv('APP_ENV'), 'cookies' => $_COOKIES, 'foo' => 'bar', ]); /* * Assuming `$monolog` is an instance of `\Monolog\Logger`: */ $monolog->pushProcessor($extraDataProcessor);
这就完成了!你传入的额外数据现在将以extra
属性的形式与所有条目一起记录。
如果你已经有一个包含一些数据的实例,你可以添加更多数据
$extraDataProcessor = addExtraData([ 'baz' => 'qux', ]);
你也可以通过键来删除额外数据
$extraDataProcessor->removeExtraData([ 'foo', 'baz', ]);
并且获取所有当前配置的数据
$extraData = $extraDataProcessor->getExtraData();
这有什么意义?
例如,我们使用这个处理器类来记录以下数据(我们认为这些数据很有用)
- 环境(例如
local
与staging
与production
) - PHP是作为控制台命令还是Web请求执行
- 命令行参数(如果相关)
- HTTP方法
- 访问的URL
- 客户端的IP地址
- 引用者
- 用户代理
其中一些(例如,Web请求相关的内容)可以通过Monolog\Processor\WebProcessor
获得 - 然而,这个类在范围上似乎有点有限,并且用它来实现这个目的可能有点过于复杂。
你甚至可以滥用Monolog\Processor\TagProcessor
类来记录额外内容,但所有内容都将记录在extra.tags
下,而不是仅在extra
下 - 而且这仍然没有达到目的。
技巧
由于我们主要与Laravel 5一起工作,所以我们有一个App\Log\Configurator
类,它负责连接基本的日志功能。它在bootstrap/app.php
中这样调用
$app->configureMonologUsing(function(\Monolog\Logger $monolog) use ($app) { $configurator = new \App\Log\Configurator; $configurator->configure($monolog, $app); });
配置器反过来将GitProcessor
(了解何时记录条目时执行的确切项目提交非常棒)和ExtraDataProcessor
推送到传递的日志实例。在这一步中,ExtraDataProcessor
仅填充当前环境、控制台命令检查和命令行参数 - 因为其余数据将通过HTTP请求(此时尚未捕获)获得。我们还在此处配置处理程序。
稍后通过服务提供商添加请求数据,当应用已启动时。
如果你记录类似输入数据的内容,请务必注意隐私问题 - 例如,不要记录登录表单中的$_POST['password']
,因为这会危害你的用户和系统。如果你使用某种类型的云托管第三方日志服务(例如Logentries、Loggly、Papertrail等)则尤其如此。
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅CONTRIBUTING和CONDUCT。
安全性
如果你发现任何与安全性相关的问题,请通过development@creitive.rs发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。