Spring Batch MDC Logging - PullRequest
       18

Spring Batch MDC Logging

0 голосов
/ 24 августа 2018

Я хочу знать, как регистрировать такие вещи, как Job Name и Execution ID, используя MCD в Spring Batch.

Вот код:

bootstrap.properties

этот файл содержит список элементов, которые я в данный момент регистрирую, и я добавил execId в качестве третьего элемента здесь.

logging.pattern.level=%5p [%X{X-B3-TraceId:-},%X{sessionId:-},%X{execId:-},%X{program:-},%X{mainframeId:-}]
spring.application.name=mcc
spring.profiles.active=globals,local,local-override

Приложение MCC

этот файл имеет мой основной метод. Когда я вручную устанавливаю здесь поле с помощью MDC.put("execId", "12345");, я вижу его в журнале, но я не понимаю, как разместить здесь нужную мне информацию.

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
public class MccApplication {

    public static void main(String[] args) {
        MDC.put("execId", "12345");
        SpringApplication.run(MccApplication.class, args);
    }

}

Буду признателен за любые идеи :) Спасибо.

1 Ответ

0 голосов
/ 24 августа 2018

Отказ от ответственности : я не знаком с весенней партией

MDC поможет вам зарегистрировать имя задания и идентификатор выполнения вместе с инструкциями журнала, потому что MDC имеет сходство с потоками. Таким образом, если вы помещаете что-то в MDC, находясь в потоке, это будет доступно вам (и для входа в систему) в течение всего жизненного цикла этого потока. Так что, если вы введете MDC.put("execId", "12345"); в свой основной метод, он будет доступен только в главном потоке.

Имя задания и идентификатор выполнения имеют смысл только в любом дочернем потоке, который может порождать весенний пакет (здесь я использую дикие предположения, поскольку я не знаком с весенним пакетом). Поэтому добавьте MDC.put("execId", "12345"); в начале вашей реальной работы, а не в метод main ().

...