View Javadoc
1   package ch.qos.logback.classic.servlet;
2   
3   import static ch.qos.logback.core.CoreConstants.DISABLE_SERVLET_CONTAINER_INITIALIZER_KEY;
4   
5   import java.util.Set;
6   
7   import jakarta.servlet.ServletContainerInitializer;
8   import jakarta.servlet.ServletContext;
9   import jakarta.servlet.ServletException;
10  
11  import ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory;
12  import ch.qos.logback.core.util.OptionHelper;
13  
14  /**
15   * Attaches a new instance of {@link LogbackServletContextListener} to the
16   * current web-applications {@link ServletContext}.
17   * 
18   * @author Ceki Gulcu
19   * @since 1.1.10
20   */
21  public class LogbackServletContainerInitializer implements ServletContainerInitializer {
22  
23      @Override
24      public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
25  
26          if (isDisabledByConfiguration(ctx)) {
27              StatusViaSLF4JLoggerFactory.addInfo("Due to deployment instructions will NOT register an instance of "
28                      + LogbackServletContextListener.class + " to the current web-app", this);
29  
30              return;
31          }
32  
33          StatusViaSLF4JLoggerFactory.addInfo(
34                  "Adding an instance of  " + LogbackServletContextListener.class + " to the current web-app", this);
35          LogbackServletContextListener lscl = new LogbackServletContextListener();
36          ctx.addListener(lscl);
37      }
38  
39      /**
40       * Search for value of DISABLE_SERVLET_CONTAINER_INITIALIZER_KEY in the web-app
41       * first, then as a system property and as an environment variable last.
42       *
43       * @param ctx
44       * @return True if value of DISABLE_SERVLET_CONTAINER_INITIALIZER_KEY is
45       *         available and set to "true", false otherwise.
46       */
47      boolean isDisabledByConfiguration(ServletContext ctx) {
48          String disableAttributeStr = null;
49          Object disableAttribute = ctx.getInitParameter(DISABLE_SERVLET_CONTAINER_INITIALIZER_KEY);
50          if (disableAttribute instanceof String) {
51              disableAttributeStr = (String) disableAttribute;
52          }
53  
54          if (OptionHelper.isNullOrEmptyOrAllSpaces(disableAttributeStr)) {
55              disableAttributeStr = OptionHelper.getSystemProperty(DISABLE_SERVLET_CONTAINER_INITIALIZER_KEY);
56          }
57  
58          if (OptionHelper.isNullOrEmptyOrAllSpaces(disableAttributeStr)) {
59              disableAttributeStr = OptionHelper.getEnv(DISABLE_SERVLET_CONTAINER_INITIALIZER_KEY);
60          }
61  
62          return Boolean.parseBoolean(disableAttributeStr);
63      }
64  
65  }