Monolog Logger在每条日志消息的末尾输出空数组

时间:2017-08-17 02:36:11

标签: php laravel monolog

我的记录器对象在每行末尾输出空数组 - [] []。例如;

  

[2017-08-17 12:26:02] import_log.INFO:checkForDuplicates :: is_processing [] []
  [2017-08-17 12:26:04] import_log.INFO:重复[] []

无论如何我可以阻止这种情况发生吗?我只想在没有空数组的情况下注销,例如,如下所示:

  

[2017-08-17 12:26:02] import_log.INFO:checkForDuplicates :: is_processing
  [2017-08-17 12:26:04] import_log.INFO:重复

我正在创建自己的日志:

protected function importXML($fName) {

    // Create a log file for each XML file imported
    $logger = new Logger("import_log");
    $logger->pushHandler(new StreamHandler(storage_path('./logs/' . $fName . '.log')), Logger::INFO);

    ....

    $logger->info($myString);


    ....

    $logger->info($myObject);
}

1 个答案:

答案 0 :(得分:6)

这些空数组是日志条目的 context extra 属性。添加日志条目时,上下文作为附加数组参数提供。 额外由"处理器填充"您附加到记录器。

可以隐藏这些空数组:

如果您没有为Monolog定义formatter,则会使用默认LineFormatter。 a LineFormatter的{​​{3}}之一是您正在寻找的选项:

public function __construct(string $format = null, string $dateFormat = null, bool $allowInlineLineBreaks = false, bool $ignoreEmptyContextAndExtra = false)

具体而言,第4个选项是相关的 - bool $ignoreEmptyContextAndExtra = false。如果您创建自己的格式化程序:

$formatter = new LineFormatter(null, null, false, true);

将它交给你的经纪人:

$handler = new StreamHandler(storage_path('./logs/' . $fName . '.log');
$handler->setFormatter($formatter);

这应该可以防止记录器为" context"显示空数组。和"额外"。