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
16
17
18
19
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
41
42
43
44
45
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 }