【问题标题】:How to use DeduplicationHandler in monolog?如何在独白中使用 DeduplicationHandler?
【发布时间】:2020-05-03 14:00:34
【问题描述】:

我在 php 脚本中找不到在 monolog 中使用 DeduplicationHandler 的任何示例。我已经阅读了它,以及它需要的论点,但无法让它发挥作用。我收到construct() must implement interface Monolog\Handler\HandlerInterface, null given 错误,但请弄清楚如何实现。

我是独白的新手,但我已经发现它非常有用。但我想消除一些我得到的重复。会像这样使用它吗?

require __DIR__ . '/vendor/autoload.php';
use Monolog\Handler\StreamHandler;
use Monolog\Handler\HandlerInterface;
use Monolog\Handler\DeduplicationHandler;
use Monolog\Logger;

$logger = new Logger('user_pg');
$logger->pushHandler(new StreamHandler(__DIR__ . '/log/user.log', Logger::DEBUG));
$handler = $logger->pushHandler(new HandlerInterface( __DIR__ . '/log/duplicates.log', Logger::ERROR));
$logger->pushHandler(new DeduplicationHandler($handler, 
$deduplicationStore = __DIR__ . '/log/duplicates.log', 
$deduplicationLevel = Logger::ERROR, $time = 60, $bubble = true));

我显然是在黑暗中拍摄,因为我找不到在这样的 php 脚本中使用它的任何示例。
任何帮助将不胜感激。

【问题讨论】:

    标签: logging duplicates monolog


    【解决方案1】:

    DeduplicationHandler 的工作方式类似于您希望应用重复数据删除的处理程序的包装器。在您的情况下,您将提供 StreamHandler 作为重复数据删除处理程序的第一个参数。我已经修改了你的代码来证明这一点。

    <?php
    
    require __DIR__ . '/vendor/autoload.php';
    use Monolog\Handler\StreamHandler;
    use Monolog\Handler\DeduplicationHandler;
    use Monolog\Logger;
    
    $logger = new Logger('user_pg');
    
    $streamHandler = new StreamHandler(__DIR__ . '/log/user.log', Logger::DEBUG);
    $logger->pushHandler(new DeduplicationHandler($streamHandler, __DIR__ . '/log/duplicates.log', Logger::ERROR, 60, true));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 2021-08-19
      • 2016-02-10
      • 2019-07-12
      • 2015-01-22
      • 2015-04-15
      相关资源
      最近更新 更多