Форматирование slf4j для записи типов сообщений с цветами

Я использую slf4j для входа в мое приложение Java. Он включает в себя много протоколирования и мониторинга журналов.
Иногда очень трудно читать и находить информацию из журналов, когда весь журнал печатается черным цветом.
Чтобы сделать его более читаемым, можно ли записывать различные типы сообщений в разные цвета?
Например, все сообщения об уровне ошибки в красном цвете или другом размере шрифта, а также все сообщения уровня Info в синем цвете и другом размере шрифта.

Любые предложения или помощь приветствуются. Thnx.

Ответ 1

Мне приходят два решения. Они не являются цветами, а альтернативными решениями:

  • В конфигурации File Appender вы можете настроить шаблон для включения уровня журнала (ошибка, предупреждение и т.д.). Затем вы можете grep файл, чтобы фильтровать сообщения по уровню.

  • Вы можете настроить два файловых приложения (для двух отдельных файлов журналов) с разным уровнем порога. Например, можно было бы регистрировать все журналы выше уровня отладки (так что информация, предупреждение, ошибка), чтобы сказать, что logs.txt, а другой будет регистрировать только журналы ошибок в файлах errors.txt

Надеюсь, что это поможет.

Ответ 2

То, что вы должны иметь в виду.

Во-первых, SLF4J - это только каротажный фасад. Как обрабатывается фактическое сообщение журнала, зависит от используемой привязки. Поэтому ваш вопрос недействителен, вместо этого вы должны указать, какую реализацию вы хотите использовать (LogBack? Log4J? И т.д.)

Во-вторых, "Раскраска" в большинстве случаев не является чем-то значимым. Например, если вы ссылаетесь на файл обычного текстового журнала, нет ничего, что мы могли бы контролировать раскраску, потому что все они являются простым текстом (если только ваш редактор не имеет специальной подсветки синтаксиса для вашего формата сообщений журнала). Это может иметь смысл, если вы хотите видеть цвет в консоли/терминале или вы выводите свой журнал в формат файла, который позволяет содержать информацию о цвете (например, HTML).

С учетом этих двух идей, вот мое предложение.

LogBack имеет встроенную поддержку раскраски http://logback.qos.ch/manual/layouts.html#coloring в выводе консоли. Если вы ищете способ увидеть цвет в выводе на консоль, и вам разрешено использовать LogBack, это то, что вы ищете.

Ответ 3

Невозможно изменить цвета журнала slf4j, потому что нет форматировщиков. SLF4J является промежуточным программным обеспечением между вашим приложением и некоторым средством ведения журнала, например Log4j или Logback.

Вы можете изменять цвета в выходе Log4j, как описано здесь. Я бы рекомендовал использовать MulticolorLayout из jcabi-log

Ответ 4

Я использую фильтры как для уровня ведения журнала, так и для пакета. Этот пример приведен из Spring boot application.properties

   logging.level.root=warn
   logging.level.org.springframework=warn
   logging.level.org.hibernate=warn
   logging.level.org.starmonkey.brown=DEBUG

Таким образом, я вижу только сообщения, которые я хочу видеть