java 日志输出 上下文_java – 使用ServletContextListener和SLF4J在contextDestroyed上没有日志输出...
我正在嘗試向記錄器寫一條消息(Vaadin)servlet已停止,這使用SLF4J和Log4j2.
為此,我使用的是ServletContextListener,它在應(yīng)用程序啟動時記錄消息.但是在contextDestroyed方法中記錄時我無法獲得任何輸出…這是我的實現(xiàn):
@WebListener
public class VaadinLogger implements ServletContextListener {
private static final Logger logger = LoggerFactory.getLogger(VaadinLogger.class);
@Override
public void contextInitialized(ServletContextEvent contextEvent) {
// Remove appenders from JUL loggers
SLF4JBridgeHandler.removeHandlersForRootLogger();
// Install bridge
SLF4JBridgeHandler.install();
// Get servlet context
ServletContext context = contextEvent.getServletContext();
// Retrieve name
String name = context.getServletContextName();
// Log servlet init information
logger.info("Start \"{}\"",name);
}
@Override
public void contextDestroyed(ServletContextEvent contextEvent) {
// Get servlet context
ServletContext context = contextEvent.getServletContext();
// Retrieve name
String name = context.getServletContextName();
// Log servlet destroy information
logger.info("End \"{}\"{}",name,System.lineSeparator()));
// Uninstall bridge
SLF4JBridgeHandler.uninstall();
}
}
此時,我猜這可能是因為在調(diào)用了contextDestroyed時,不再可能進(jìn)行日志記錄,因為它們已被垃圾收集器銷毀.
所以現(xiàn)在我的問題是,是否可以在銷毀上下文之前記錄servlet已停止,或者在log4j2記錄器被銷毀之前使contextlistener執(zhí)行?
提前致謝!
總結(jié)
以上是生活随笔為你收集整理的java 日志输出 上下文_java – 使用ServletContextListener和SLF4J在contextDestroyed上没有日志输出...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java如何让一个对象为null_将Ja
- 下一篇: 工商银行信用卡哪个好 看看哪一种才更适合