Для приложения Spring я хочу добавить в журнал настраиваемое поле.
В настоящее время я использую формат по умолчанию, но хочу добавить настраиваемое поле (поле категории), которое должно присутствовать во всех журналах:
Какое лучшее решение добавить настраиваемое поле в журнал журнала?
До сих пор я изучал следующие возможные решения:
Использовать маркер. Недостатком этого является то, что оно не масштабируется: если в будущем вам понадобится другое настраиваемое поле, вы не сможете добавить еще один маркер. Кроме того, судя по некоторым другим сообщениям, маркер лучше всего подходит для пометки специальных журналов, которые необходимо обрабатывать по-разному.
Используйте MDC.
Также использование этого кажется не лучшим решением, потому что:
Он сохраняет контекст, поэтому, если в одной функции есть несколько операторов журнала, перед каждым logger.info() должен быть MDC.put("category", "action")
Код становится многословным.
Создайте собственный конвертер (ссылка). Получите аргументы из ILoggingEvent, получите аргумент 0. Если это тот же тип, что и перечисление категории, используйте его. Вызов для этого похож на logger.info("Сообщение здесь: {} {} {}", CatEnum.Action.getValue(), msg1, msg2, msg3).
Создайте некоторый статический метод, в котором генерируется окончательный формат.
Шаблон похож на:
%m%n
Для регистрации следует использовать что-то вроде этого: logger.info(customFormatter.fmtLog(CatEnum.Action.getValue(), msg)). Возвращаемое значение fmtLog должно представлять собой всю информацию из журнала по умолчанию + поле категории.
Существуют ли какие-либо встроенные решения для добавления настраиваемого поля?
Для приложения Spring я хочу добавить в журнал настраиваемое поле. В настоящее время я использую формат по умолчанию, но хочу добавить настраиваемое поле (поле категории), которое должно присутствовать во всех журналах: [code]W:Action D:2022-01-10 23:21:03.285 L:INFO C:c.h.l.LoggingDemoApplication F:StartupInfoLogger.java(61) Fn:logStarted T:main R: - Hello World [/code] Какое лучшее решение добавить настраиваемое поле в журнал журнала? До сих пор я изучал следующие возможные решения: [list] [*]Использовать маркер. Недостатком этого является то, что оно не масштабируется: если в будущем вам понадобится другое настраиваемое поле, вы не сможете добавить еще один маркер. Кроме того, судя по некоторым другим сообщениям, маркер лучше всего подходит для пометки специальных журналов, которые необходимо обрабатывать по-разному.
[*]Используйте MDC. Также использование этого кажется не лучшим решением, потому что: [list] Он сохраняет контекст, поэтому, если в одной функции есть несколько операторов журнала, перед каждым logger.info() должен быть MDC.put("category", "action") [*]Код становится многословным. [/list]
[*]Создайте собственный конвертер (ссылка). Получите аргументы из ILoggingEvent, получите аргумент 0. Если это тот же тип, что и перечисление категории, используйте его. Вызов для этого похож на logger.info("Сообщение здесь: {} {} {}", CatEnum.Action.getValue(), msg1, msg2, msg3).
[*]Создайте некоторый статический метод, в котором генерируется окончательный формат. Шаблон похож на: %m%n Для регистрации следует использовать что-то вроде этого: logger.info(customFormatter.fmtLog(CatEnum.Action.getValue(), msg)). Возвращаемое значение fmtLog должно представлять собой всю информацию из журнала по умолчанию + поле категории.
[/list] Существуют ли какие-либо встроенные решения для добавления настраиваемого поля?