Как определить пользовательский форматировщик логирования

Дата обновления перевода 2023-09-19

Как определить пользовательский форматировщик логирования

Каждый обработчик логирования использует Formatter, чтобы форматировать запись перед тем, как её логировать. Все обработчики Monolog по умолчанию используют экземпляр Monolog\Formatter\LineFormatter,, но вы можете с лёгкостью заменить его. Ваш форматировщик должен релизовывать Monolog\Formatter\FormatterInterface.

Например, чтобыиспользовать встроенный JsonFormatter, зарегистрируйте его как сервис, а потом сконфигурируйте ваш обработчик так, чтобы он его использовал:

1
2
3
4
5
6
7
# config/packages/prod/monolog.yaml (and/or config/packages/dev/monolog.yaml)
monolog:
    handlers:
        file:
            type: stream
            level: debug
            formatter: 'monolog.formatter.json'

В Monolog имеется множество встроенных форматировщиков. Многие из них объявлены как сервисы и могут быть использованы в опции ``formatter'':

  • monolog.formatter.chrome_php: форматирует запись в соответствии с форматом массива ChromePHP
  • monolog.formatter.gelf_message: сериализует формат в формат GELF
  • monolog.formatter.html: форматирует запись в HTML-таблицу
  • monolog.formatter.json: сериализует запись в объект JSON
  • monolog.formatter.line: форматирует запись в одну строку
  • monolog.formatter.loggly: форматирует информацию о записи в JSON в формате, совместимом с Loggly
  • monolog.formatter.logstash: сериализует запись в формат событий Logstash
  • monolog.formatter.normalizer: нормализует запись для удаления объектов/ресурсов, чтобы её было проще скидывать на различные цели
  • monolog.formatter.scalar: форматирует запись в ассоциативный массив скалярных (+ null) значений (объекты и массивы будут закодированы в JSON)
  • monolog.formatter.wildfire: сериализует запись в соответствии с требованиями Wildfire к заголовкам