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