【问题标题】:Using Monolog WebProcessor with Laravel 5.6在 Laravel 5.6 中使用 Monolog WebProcessor
【发布时间】:2019-01-11 15:24:04
【问题描述】:

我看到新的日志记录堆栈/通道提供了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,我猜这不对。

【问题讨论】:

  • 你试过什么? “似乎不起作用”是什么意思 - 有错误吗?向我们展示您的一些 5.6 代码。
  • @AkenRoberts 我试过tap => Monolog\Processor\WebProcessor::class,我猜这是不对的。

标签: laravel laravel-5.6 monolog


【解决方案1】:

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

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

这个类反过来会将所需的处理器推送到它的__invoke 方法中的所有处理程序上。

namespace App\Logging;
use Illuminate\Log\Logger;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2019-09-07
    • 2022-10-06
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多