繁体   English   中英

Laravel日志记录:日志行末尾的额外方括号?

[英]Laravel logging: extra square brackets at end of log lines?

我对Laravel很新,我注意到当我使用基于Monolog的日志记录时,例如Log::info('blah blah') ,它写入我的日志文件的行后缀有两组空方括号。 它们是什么,我怎么能把它们关掉? 他们丝毫没有帮助。 我已经尝试深入挖掘源代码和谷歌搜索,但我没有看到任何解释。

例:

[2013-11-12 09:13:16] log.INFO:Hello world [] []

[2013-11-12 09:13:31] log.INFO:我的愚蠢日志消息[] []

谢谢!

下面是它结合curtisdf的答案与解决此答案由Seldaek ,并且不需要子类独白的LineFormatter

假设您的app/start/global.php文件包含:

Log::useFiles(storage_path() . '/logs/laravel.log');

替换为:

use Monolog\Handler\StreamHandler;
use Monolog\Logger as MonologLogger;
use Monolog\Formatter\LineFormatter;

// Use custom LineFormatter, with ignoreEmptyContextAndExtra enabled
Log::getMonolog()->pushHandler(
    (new StreamHandler(
        storage_path() . '/logs/laravel.log',
        MonologLogger::DEBUG
    ))->setFormatter(new LineFormatter(null, null, true, true))
);

经过进一步的研究,我发现这种情况发生在Monolog\\Formatter\\LineFormatter 简而言之,括号是空数组的JSON表示。 不幸的是,Laravel似乎没有提供一个简单的方法,所以我最终继承了Monolog。 我在这篇SO帖子上发布了详细信息。 但由于该帖子不是Laravel特有的,我想我会分享如何在Laravel上下文中使用这样的自定义LineFormatter

app/start/global.php ,默认情况下会有一个定义日志记录的部分。 它看起来像这样:

Log::useDailyFiles(storage_path().'/logs/log-'.php_sapi_name().'.txt');

替换为:

$handler = new Monolog\Handler\StreamHandler(
    storage_path().'/logs/log-'.php_sapi_name().'.txt');
$handler->setFormatter(new My\Fancy\Monolog\LineFormatter());
Log::getMonolog()->pushHandler($handler);

请享用!

如果您不介意将[]作为第二个参数添加到您对Log::的调用中,那么它将不会被打印:

Log::info('My funky log', []) ;

打印为:

My funky log

此用法还提醒您可以选择传递该数组中的对象,如果需要,它将被转储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM