1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.michaelo.tomcat.extras.listeners;
17
18 import net.sf.michaelo.tomcat.extras.utils.ContextUtils;
19
20 import org.apache.catalina.Context;
21 import org.apache.catalina.Lifecycle;
22 import org.apache.catalina.LifecycleEvent;
23 import org.apache.catalina.LifecycleListener;
24 import org.apache.catalina.deploy.ContextEnvironment;
25 import org.apache.commons.lang3.StringUtils;
26 import org.apache.juli.logging.Log;
27 import org.apache.juli.logging.LogFactory;
28
29
30
31
32
33
34
35
36
37
38 public class LogbackContextNameListener implements LifecycleListener {
39
40 private static final Log logger = LogFactory.getLog(LogbackContextNameListener.class);
41 private Context context;
42
43 private String name = "logback/contextName";
44
45 @Override
46 public void lifecycleEvent(LifecycleEvent le) {
47
48 if (le.getLifecycle() instanceof Context)
49 context = (Context) le.getLifecycle();
50 else
51 return;
52
53 String contextName = ContextUtils.getName(context);
54 if (le.getType().equals(Lifecycle.START_EVENT)) {
55
56
57 ContextEnvironment ce = context.getNamingResources().findEnvironment(name);
58 if (ce != null)
59 context.getNamingResources().removeEnvironment(name);
60
61 ce = new ContextEnvironment();
62 ce.setName(name);
63 ce.setOverride(false);
64 ce.setType("java.lang.String");
65 ce.setValue(contextName);
66 if (logger.isDebugEnabled())
67 logger.debug(String.format(
68 "Adding Logback context name env entry '%s' to context '%s'", name,
69 contextName));
70 context.getNamingResources().addEnvironment(ce);
71 }
72
73 }
74
75 public void setName(String name) {
76 if (StringUtils.isEmpty(name))
77 throw new IllegalArgumentException("Parameter 'name' cannot be empty");
78
79 this.name = name;
80 }
81
82 }