如何在monlog中使用重复数据删除处理程序



我在php脚本中找不到任何在monolog中使用DeduplicationHandler的示例。我读过关于它的文章,以及它所需要的论据,但无法让它发挥作用。我得到了一个construct() must implement interface MonologHandlerHandlerInterface, null given错误,但想办法实现它。

我是单语博客的新手,但我已经发现它非常有用。但我想消除一些重复。用它会变成这样吗?

require __DIR__ . '/vendor/autoload.php';
use MonologHandlerStreamHandler;
use MonologHandlerHandlerInterface;
use MonologHandlerDeduplicationHandler;
use MonologLogger;
$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脚本中使用它的例子
如有任何帮助,我们将不胜感激。

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

<?php
require __DIR__ . '/vendor/autoload.php';
use MonologHandlerStreamHandler;
use MonologHandlerDeduplicationHandler;
use MonologLogger;
$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));

最新更新