我发现新的日志堆栈/通道提供了一种方法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
我想这是不对的。
好的。经过一番研究后似乎tap
是最好的挂钩方式processors
。因此,如果我想将处理器标记到当前日志记录堆栈中的所有处理程序,我可以添加以下内容:
tap => [App\Logging\MyClass::class]
这个类反过来会将所需的处理器推送到其内部的所有处理程序上__invoke
method.
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);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)