1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.web;
18
19 import javax.servlet.ServletContext;
20 import javax.servlet.ServletContextEvent;
21 import javax.servlet.ServletContextListener;
22 import javax.servlet.UnavailableException;
23
24
25
26
27
28
29 public class Log4jServletContextListener implements ServletContextListener {
30
31 private ServletContext servletContext;
32 private Log4jWebInitializer initializer;
33
34 @Override
35 public void contextInitialized(final ServletContextEvent event) {
36 this.servletContext = event.getServletContext();
37 this.servletContext.log("Log4jServletContextListener ensuring that Log4j starts up properly.");
38
39 this.initializer = Log4jWebInitializerImpl.getLog4jWebInitializer(this.servletContext);
40 try {
41 this.initializer.initialize();
42 this.initializer.setLoggerContext();
43 } catch (final UnavailableException e) {
44 throw new RuntimeException("Failed to initialize Log4j properly.", e);
45 }
46 }
47
48 @Override
49 public void contextDestroyed(final ServletContextEvent event) {
50 if (this.servletContext == null || this.initializer == null) {
51 throw new IllegalStateException("Context destroyed before it was initialized.");
52 }
53 this.servletContext.log("Log4jServletContextListener ensuring that Log4j shuts down properly.");
54
55 this.initializer.clearLoggerContext();
56 this.initializer.deinitialize();
57 }
58 }