Каков правильный подход к ведению журнала при использовании Spring Batch?

#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 будет заменен этим дуэтом.

Еще: http://www.slf4j.org/
http://logback.qos.ch/