1
2
3
4
5
6
7
8
9
10
11
12
13
14 package chapters.filters;
15
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
18 import org.slf4j.MDC;
19 import org.slf4j.Marker;
20 import org.slf4j.MarkerFactory;
21
22 import ch.qos.logback.classic.LoggerContext;
23 import ch.qos.logback.classic.joran.JoranConfigurator;
24 import ch.qos.logback.core.joran.spi.JoranException;
25
26 public class FilterEvents {
27
28 public static void main(String[] args) throws InterruptedException {
29 if (args.length == 0) {
30 System.out.println("A configuration file must be passed as a parameter.");
31 return;
32 }
33
34 Logger logger = (Logger) LoggerFactory.getLogger(FilterEvents.class);
35 LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
36
37 try {
38 JoranConfigurator configurator = new JoranConfigurator();
39 configurator.setContext(lc);
40 lc.reset();
41 configurator.doConfigure(args[0]);
42 } catch (JoranException je) {
43 je.printStackTrace();
44 }
45
46 for (int i = 0; i < 10; i++) {
47 if (i == 3) {
48 MDC.put("username", "sebastien");
49 logger.debug("logging statement {}", i);
50 MDC.remove("username");
51 } else if (i == 6) {
52 Marker billing = MarkerFactory.getMarker("billing");
53 logger.error(billing, "billing statement {}", i);
54 } else {
55 logger.info("logging statement {}", i);
56 }
57 }
58 }
59 }