1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.classic.sift;
15
16 import ch.qos.logback.classic.LoggerContext;
17 import ch.qos.logback.classic.selector.ContextSelector;
18 import ch.qos.logback.classic.spi.ILoggingEvent;
19 import ch.qos.logback.classic.util.ContextSelectorStaticBinder;
20 import ch.qos.logback.core.sift.Discriminator;
21 import ch.qos.logback.core.spi.ContextAwareBase;
22
23
24
25
26
27
28
29
30
31
32
33 public class JNDIBasedContextDiscriminator extends ContextAwareBase implements
34 Discriminator<ILoggingEvent> {
35
36 private static final String KEY = "contextName";
37 private String defaultValue;
38 private boolean started = false;
39
40 public JNDIBasedContextDiscriminator() {
41 }
42
43
44
45
46 public String getDiscriminatingValue(ILoggingEvent event) {
47 ContextSelector selector = ContextSelectorStaticBinder.getSingleton()
48 .getContextSelector();
49
50 if (selector == null) {
51 return defaultValue;
52 }
53
54 LoggerContext lc = selector.getLoggerContext();
55 if (lc == null) {
56 return defaultValue;
57 }
58
59 return lc.getName();
60 }
61
62 public boolean isStarted() {
63 return started;
64 }
65
66 public void start() {
67 started = true;
68 }
69
70 public void stop() {
71 started = false;
72 }
73
74 public String getKey() {
75 return KEY;
76 }
77
78 public void setKey(String key) {
79 throw new UnsupportedOperationException(
80 "Key cannot be set. Using fixed key " + KEY);
81 }
82
83
84
85
86
87 public String getDefaultValue() {
88 return defaultValue;
89 }
90
91
92
93
94
95
96
97 public void setDefaultValue(String defaultValue) {
98 this.defaultValue = defaultValue;
99 }
100 }