Настройка json форматера в монологе
Как журналы могут быть установлены в формате 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"}
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":{}
// }
Сама документация не самая лучшая, но тоже начало.