creitive/monolog-extra-data-processor

为Monolog添加任意日志数据的处理器

1.0.1 2015-10-20 13:52 UTC

This package is auto-updated.

Last update: 2024-09-07 21:41:16 UTC


README

Latest Version on Packagist Software License Build Status Total Downloads

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();

这有什么意义?

例如,我们使用这个处理器类来记录以下数据(我们认为这些数据很有用)

  • 环境(例如localstagingproduction
  • 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

贡献

有关详细信息,请参阅CONTRIBUTINGCONDUCT

安全性

如果你发现任何与安全性相关的问题,请通过development@creitive.rs发送电子邮件,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件