@djon_pulse

Как изменить формат логгирования Monolog Symfony?

Доброго дня!
Появилась задача записывать логи с изменениями в простом формате JSON

{"datetime":"", "data":{"email":"", "user_id":""}

Записывать логи нужно через Monolog (записывать логи не монологом нельзя).
Записывается так
$this->logger->log(LogLevel::INFO, '', $array));

$array - простой архив который и нужно записать как json

Задача которую хочу решить связана с тем, что нужно получить запись логов без лишних аттрибутов, которые создаются монологом.

{"message":"","context":"{datetime":"", "data":{"email":"", "user_id":""},"level":200,"level_name":"INFO","channel":"","datetime":{"date":"","timezone_type":3,"timezone":"Europe\/Berlin"},"extra":[]}


Из лога нужно убрать
- message
- context
- level
- level_name
- channel
- datetime

На выходе должен быть такой формат
{"datetime":"", "data":{"email":"", "user_id":""}
{"datetime":"", "data":{"email":"", "user_id":""}


Подскажите как это можно реализовать, возможно пример форматтера
  • Вопрос задан
  • 376 просмотров
Решения вопроса 3
glaphire
@glaphire
PHP developer
Ровно так, как написано в доке:
How to Define a Custom Logging Formatter
Ответ написан
@djon_pulse Автор вопроса
Да, ответ оказался действительно проще чем казалось.

Достаточно было использовать форматер Monolog\Formatter\LineFormatter в конфиге и убрать лишние аргументы в нем.

attribute.logger.formatter:
    class: Monolog\Formatter\LineFormatter
    arguments: [ "%%message%% %%context%%\n" ]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы