В моем приложении на основе сервлета я хотел бы регистрировать события для запуска и завершения работы.
Я попытался реализовать интерфейс ServletContextListener
для этого:
public class DiagnosticListener
implements ServletContextListener {
private static final Logger LOG = LogManager.getLogger(DiagnosticListener.class);
@Override
public void contextInitialized( final ServletContextEvent sce ) {
LOG.info("Context initialized.");
}
@Override
public void contextDestroyed( final ServletContextEvent sce ) {
LOG.info("Context destroyed.");
}
}
Событие инициализации регистрируется, как и ожидалось, но событие уничтожения никогда не появляется. Я предполагаю, что это связано с тем, как log4j2 управляет своим жизненным циклом, используя аналогичный прослушиватель, что инфраструктура ведения журнала больше недоступна во время этого события.
Есть ли способ зарегистрировать событие закрытия приложения?