1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.slf4j;
18
19 import java.util.concurrent.ConcurrentHashMap;
20 import java.util.concurrent.ConcurrentMap;
21
22 import org.apache.logging.log4j.message.MessageFactory;
23 import org.apache.logging.log4j.spi.ExtendedLogger;
24 import org.apache.logging.log4j.spi.LoggerContext;
25 import org.apache.logging.log4j.spi.LoggerContextKey;
26 import org.slf4j.LoggerFactory;
27
28
29
30
31 public class SLF4JLoggerContext implements LoggerContext {
32 private final ConcurrentMap<String, SLF4JLogger> loggers = new ConcurrentHashMap<>();
33
34 @Override
35 public Object getExternalContext() {
36 return null;
37 }
38
39 @Override
40 public ExtendedLogger getLogger(final String name) {
41 if (!loggers.containsKey(name)) {
42 loggers.putIfAbsent(name, new SLF4JLogger(name, LoggerFactory.getLogger(name)));
43 }
44 return loggers.get(name);
45 }
46
47 @Override
48 public ExtendedLogger getLogger(final String name, final MessageFactory messageFactory) {
49 if (!loggers.containsKey(name)) {
50 loggers.putIfAbsent(name, new SLF4JLogger(name, messageFactory, LoggerFactory.getLogger(name)));
51 }
52 return loggers.get(name);
53 }
54
55 @Override
56 public boolean hasLogger(final String name) {
57 return loggers.containsKey(LoggerContextKey.create(name));
58 }
59
60 @Override
61 public boolean hasLogger(String name, MessageFactory messageFactory) {
62 return loggers.containsKey(LoggerContextKey.create(name, messageFactory));
63 }
64
65 @Override
66 public boolean hasLogger(String name, Class<? extends MessageFactory> messageFactoryClass) {
67 return loggers.containsKey(LoggerContextKey.create(name, messageFactoryClass));
68 }
69 }