Shutdownhook - журнал не печатается в консоли / метод File @Predestroy

При запуске весенней загрузки приложения, при вызове метода Shutdown hook @Predestroy вызывается и происходит закрытие приложения. Но журналы не печатаются ни в консоли, ни в файле, а в строке sys out после печати журнала. Кажется, консоль Looger закрывается до приложения / процесса shutodwn.

Предложите некоторую работу для решения проблемы.

Скрипт выключения:

SET / P PID_FROM_FILE =

Класс изящного крючка:

@Component
public class GracefulShutdownHook {

private static final Logger LOGGER = LogManager.getLogger(GracefulShutdownHook.class);

@Autowired
@Qualifier("inboundChannel")
MessageChannel inboundChannel;

@Autowired
@Qualifier("pollingExecutor")
ThreadPoolTaskExecutor pollingExecutor;

@PreDestroy 
public void onDestroy() throws Exception {

    LOGGER.log(Level.INFO, "Application shutdown Initiated"); // this log is not printed
    System.out.println(""Application shutdown Initiated""); // Sys out is printed

    LOGGER.log(Level.INFO, "Application shutdown Processing"); // this log is not printed

    inboundChannel.send(new  GenericMessage<String>"@'filesInChannel.adapter'.stop()"));

    pollingExecutor.shutdown();

    LOGGER.log(Level.INFO, "Application shutdown succesfully"); // not printed
}

 @Bean
 public ExitCodeGenerator exitCodeGenerator() {
 return () -> 0;
 }
 }

1 ответ

Я подозреваю, что вы создали состояние гонки между регистрацией и выключением; то есть отключение происходит до завершения регистрации. Попробуйте добавить короткий сон в конце вашего метода @PreDestroy и посмотрите, что изменится.

Другие вопросы по тегам