2016-06-01 5 views
1

Innerhalb meiner Servlet-basierten Anwendung möchte ich Ereignisse zum Starten und Herunterfahren protokollieren.Protokollierung von Servlet-Kontext zerstört Ereignis

Ich habe versucht, die ServletContextListener Schnittstelle zu implementieren, dies zu tun:

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."); 
    } 
} 

Das initialisierte Ereignis wird wie erwartet angemeldet, aber das zerstörte Ereignis wird nie. Ich gehe davon aus, dass dies damit zu tun hat, wie log4j2 seinen Lebenszyklus mit einem ähnlichen Listener verwaltet, dass die Protokollierungsinfrastruktur während dieses Ereignisses nicht mehr verfügbar ist.

Gibt es eine Möglichkeit, ein Ereignis für die heruntergefahrene Anwendung zu protokollieren?

Antwort

0

Wenn Sie den ServletContextListener von Log4j vor Ihrem in web.xml konfiguriert haben, dann sollte Log4j vor Ihrem ServletContextListener initialisiert und nach Ihrem beendet werden.

+0

Ich bin in einem Servlet 3.0-Container ausgeführt und habe keine manuelle Konfiguration von Log4j-Servlet-Komponenten vorgenommen. –

Verwandte Themen