1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.async;
18
19 import java.net.URI;
20
21 import org.apache.logging.log4j.core.Logger;
22 import org.apache.logging.log4j.core.LoggerContext;
23 import org.apache.logging.log4j.core.config.Configuration;
24 import org.apache.logging.log4j.core.config.DefaultConfiguration;
25 import org.apache.logging.log4j.core.jmx.RingBufferAdmin;
26 import org.apache.logging.log4j.message.MessageFactory;
27 import org.apache.logging.log4j.status.StatusLogger;
28
29
30
31
32 public class AsyncLoggerContext extends LoggerContext {
33
34 private static final long serialVersionUID = 1L;
35
36 private final AsyncLoggerDisruptor loggerDisruptor;
37
38 public AsyncLoggerContext(final String name) {
39 super(name);
40 loggerDisruptor = new AsyncLoggerDisruptor(name);
41 }
42
43 public AsyncLoggerContext(final String name, final Object externalContext) {
44 super(name, externalContext);
45 loggerDisruptor = new AsyncLoggerDisruptor(name);
46 }
47
48 public AsyncLoggerContext(final String name, final Object externalContext, final URI configLocn) {
49 super(name, externalContext, configLocn);
50 loggerDisruptor = new AsyncLoggerDisruptor(name);
51 }
52
53 public AsyncLoggerContext(final String name, final Object externalContext, final String configLocn) {
54 super(name, externalContext, configLocn);
55 loggerDisruptor = new AsyncLoggerDisruptor(name);
56 }
57
58 @Override
59 protected Logger newInstance(final LoggerContext ctx, final String name, final MessageFactory messageFactory) {
60 return new AsyncLogger(ctx, name, messageFactory, loggerDisruptor);
61 }
62
63 @Override
64 public void setName(final String name) {
65 super.setName("AsyncContext[" + name + "]");
66 loggerDisruptor.setContextName(name);
67 }
68
69
70
71
72
73
74 @Override
75 public void start() {
76 loggerDisruptor.start();
77 super.start();
78 }
79
80
81
82
83
84
85 @Override
86 public void start(Configuration config) {
87 maybeStartHelper(config);
88 super.start(config);
89 }
90
91 private void maybeStartHelper(Configuration config) {
92
93
94
95 if (config instanceof DefaultConfiguration) {
96 StatusLogger.getLogger().debug("[{}] Not starting Disruptor for DefaultConfiguration.", getName());
97 } else {
98 loggerDisruptor.start();
99 }
100 }
101
102 @Override
103 public void stop() {
104 loggerDisruptor.stop();
105 super.stop();
106 }
107
108
109
110
111
112
113
114 public RingBufferAdmin createRingBufferAdmin() {
115 return loggerDisruptor.createRingBufferAdmin(getName());
116 }
117
118
119
120
121
122 public void setUseThreadLocals(final boolean useThreadLocals) {
123 loggerDisruptor.setUseThreadLocals(useThreadLocals);
124 }
125 }