在Laravel 5.6中使用Monolog WebProcessor

时间:2018-08-03 17:39:24

标签: laravel laravel-5.6 monolog

我看到新的日志记录堆栈/通道提供了一种tap或定义handlers的方法。但是,我正在尝试加载WebProcessor,它似乎不起作用。应该利用这个吗?还是有其他加载方式?

这特定于Laravel 5.6。这是我在使用Laravel 5.2(bootstrap/app.php)的旧应用程序中使用的内容:

$app->configureMonologUsing(function (Monolog\Logger $monolog) {
    /* Include basic http props in logs */
    $webProcessor = new Monolog\Processor\WebProcessor();
    $monolog->pushProcessor($webProcessor);
});

@AkenRoberts我尝试了tap => Monolog\Processor\WebProcessor::class,我猜这是不对的。

1 个答案:

答案 0 :(得分:0)

好的。经过一些研究,似乎tap是钩住processors的最佳方法。因此,如果我想将一个处理器标记为当前日志记录堆栈中的所有处理程序,可以通过添加以下代码来实现:

tap => [[App\Logging\MyClass::class]]

此类依次将所需的处理器推入其__invoke方法中的所有处理程序。

/**
 * Customize the given logger instance.
 *
 * @param  \Illuminate\Log\Logger  $logger
 * @return void
 */
public function __invoke($logger)
{
    foreach ($logger->getHandlers() as $handler) {
        $handler->pushProcessor(new WebProcessor);
    }
}