Php Monolog Logger在每条日志消息的末尾输出空数组
我的logger对象正在输出每行末尾的空数组-Php Monolog Logger在每条日志消息的末尾输出空数组,php,monolog,Php,Monolog,我的logger对象正在输出每行末尾的空数组-[]]。比如, [2017-08-17 12:26:02]导入日志信息:checkForDuplicates::正在处理[][] [2017-08-17 12:26:04]导入日志信息:重复[] 我能阻止这一切发生吗?我只想在不使用空阵列的情况下注销,如以下所示: [2017-08-17 12:26:02]导入日志信息:checkForDuplicates::正在处理 [2017-08-17 12:26:04]导入日志信息:重复 我正在创建自己的日志
[]]
。比如,
[2017-08-17 12:26:02]导入日志信息:checkForDuplicates::正在处理[][][2017-08-17 12:26:04]导入日志信息:重复[] 我能阻止这一切发生吗?我只想在不使用空阵列的情况下注销,如以下所示: [2017-08-17 12:26:02]导入日志信息:checkForDuplicates::正在处理
[2017-08-17 12:26:04]导入日志信息:重复 我正在创建自己的日志,如下所示:
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);
}
这些空数组是日志项的上下文和额外属性上下文在添加日志条目时作为附加数组参数提供Extra由附加到记录器的“处理器”填充 可以隐藏这些空数组: 如果不为Monolog定义
格式化程序
,它将使用默认的行格式化程序
。LineFormatter
的一个重要功能是您正在寻找的选项:
public function __construct(string $format = null, string $dateFormat = null, bool $allowInlineLineBreaks = false, bool $ignoreEmptyContextAndExtra = false)
具体来说,第四个选项是相关的-bool$ignoreEmptyContextAndExtra=false
。如果您创建自己的格式化程序:
$formatter = new LineFormatter(null, null, false, true);
将其交给您的处理程序:
$handler = new StreamHandler(storage_path('./logs/' . $fName . '.log'));
$handler->setFormatter($formatter);
这将防止记录器显示“context”和“extra”的空数组。要使用LineFormatter,您需要
use\Monolog\Formatter\LineFormatter代码>这是否回答了您的问题?