【问题标题】:Setting json formatter in monolog在独白中设置 json 格式化程序
【发布时间】:2017-05-21 04:26:45
【问题描述】:

monolog中如何将日志设置为json格式....

$logger = new StreamHandler(__DIR__.'/my_app.log');
$logger->setFormatter( new JsonFormatter() );
$logger->pushHandler($logger);

这似乎不正确,因为它显示错误

调用未定义的方法 Monolog\Logger::setFormatter()

我也希望我的日志记录如下:

message{
a="something";
b="something else"
}

代替:

message{a="something";b="something else"}

【问题讨论】:

  • 您不会将记录器推送到自身,而是将其推送到主 Monolog 记录器实例。此外,您希望格式化日志的方式不是有效的 JSON,因此在这种情况下,您必须创建自己的自定义格式化程序。

标签: php logging monolog


【解决方案1】:

如果其他人也有这个问题:格式化程序可以设置为处理程序,而不是记录器。

use Monolog\Formatter\JsonFormatter;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;

$logger = new Logger('your_channel_name');
$handler = new StreamHandler('your/dir.log');
$handler->setFormatter( new JsonFormatter() );
$logger->pushHandler($handler);

// and then where ever in the code
$logger->info('your message', ["var1" => "value 1", "otherVar" => "otherValue"]);

// it will result in a parsable output similar to this:
// {
//   "message":"your message",
//   "context": {
//      "var1":"value 1", 
//      "otherVar":"otherValue"
//   }, 
//   "level":200, 
//   "level_name":"INFO",  
//   "channel":"your_channel_name",
//   "datetime":"2021-06-25T10:54:10.116817+00:00",
//   "extra":{}
// }

documentation 本身并不是最好的,但也是一个开始。

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2020-01-24
    • 2014-07-07
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多