使用 Monolog 时清理日志记录?

Clean Logging when using Monolog?

我想使用 Monolog 来记录一些信息。

这是我的代码:

// Create the logger
$logger = new Monolog\Logger('my_logger');

$path = storage_path('app/logs/mc.log');
$logger->pushHandler(new Monolog\Handler\StreamHandler($path, Monolog\Logger::INFO));

// You can now use your logger
$logger->info('My logger is now ready');

这是我执行代码几次后日志文件的样子:

[2018-02-13 15:06:12] my_logger.INFO: My logger is now ready [] []

[2018-02-13 15:06:29] my_logger.INFO: My logger is now ready [] []

我想要一个更干净的日志文件,如下所示:

[2018-02-13 15:06:12] My logger is now ready

[2018-02-13 15:06:29] My logger is now ready

这可能吗?或者至少可以删除最后的两个空括号吗?

您可以自定义日志格式。 From the docs:

// the default date format is "Y-m-d H:i:s"
$dateFormat = "Y n j, g:i a";
// the default output format is "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"
$output = "%datetime% > %level_name% > %message% %context% %extra%\n";
// finally, create a formatter
$formatter = new LineFormatter($output, $dateFormat);

// Create a handler
$stream = new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG);
$stream->setFormatter($formatter);
// bind it to a logger object
$securityLogger = new Logger('security');
$securityLogger->pushHandler($stream);

您将删除标准格式的 %channel%.%level_name%%context%%extra% 组件。

也就是说,严重性可能非常重要 - 您想知道某项是 DEBUG 日志项还是 CRITICAL 日志项。 [] 位也是如此 - 它们有时可能包含重要信息以供进一步分析。

这些日志通常不适合非技术用户查看,因此我质疑为了最好的可读性调整而抑制有用信息的价值。