#java #logging #spring-batch
#java #ведение журнала #spring-batch
Вопрос:
Каков правильный подход к ведению журнала при использовании Spring Batch? Должен ли я использовать log4j (или что-то подобное) или Spring Batch предоставляет некоторые инструменты, которые помогают мне создать экземпляр logger и использовать его? Может быть, какое-то внедрение зависимостей в регистраторе?
Ответ №1:
Я использовал log4j. и это простой и приятный подход.
Ответ №2:
Я не уверен, что на вопрос оригинального постера был дан ответ, поэтому я попробую немного переформулировать это. В Spring Batch может выполняться несколько потоков, и вы можете захотеть вести ведение журнала для конкретного задания, чтобы все события для конкретного задания регистрировались в одном файле журнала. Вам нужен регистратор, область действия которого привязана непосредственно к обрабатываемому заданию. Когда задание завершается, регистратор (и все ссылки на регистратор) исчезают.
Итак, когда вы отправляете задание № 1, все события регистрируются в «job_1.log»; когда вы отправляете задание № 2, его события регистрируются в «job_2.log» и т.д.
В log4j, когда вы выполняете «Logger.getLogger(‘mylogger’)», вы сообщаете LogManager, чтобы он извлек ‘mylogger’ из кэша и передал его вам. Что вам действительно нужно, так это новый экземпляр регистратора, настроенный с использованием конфигурации mylogger. Весной это обычно может быть сделано с помощью прототипа bean. Каждый раз, когда вы запрашиваете контекст для ‘mylogger’, вы получаете новый экземпляр.
Комментарии:
1. Обратите внимание, что log4j также имеет функцию, называемую вложенными диагностическими контекстами, для выполнения того же самого для каждого потока: logging.apache.org/log4j/1.2 /…
Ответ №3:
Вам следует подумать о Slf4J (logging API) Logback (реализация ведения журнала), поскольку предполагается, что Log4j будет заменен этим дуэтом.