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 org.apache.logging.log4j.LogManager;
20 import org.apache.logging.log4j.spi.AbstractLoggerAdapter;
21 import org.apache.logging.log4j.spi.LoggerContext;
22 import org.apache.logging.log4j.util.ReflectionUtil;
23 import org.slf4j.ILoggerFactory;
24 import org.slf4j.Logger;
25
26
27
28
29 public class Log4jLoggerFactory extends AbstractLoggerAdapter<Logger> implements ILoggerFactory {
30
31 private static final String FQCN = Log4jLoggerFactory.class.getName();
32 private static final String PACKAGE = "org.slf4j";
33
34 @Override
35 protected Logger newLogger(final String name, final LoggerContext context) {
36 final String key = Logger.ROOT_LOGGER_NAME.equals(name) ? LogManager.ROOT_LOGGER_NAME : name;
37 return new Log4jLogger(context.getLogger(key), name);
38 }
39
40 @Override
41 protected LoggerContext getContext() {
42 final Class<?> anchor = ReflectionUtil.getCallerClass(FQCN, PACKAGE);
43 return anchor == null ? LogManager.getContext() : getContext(ReflectionUtil.getCallerClass(anchor));
44 }
45
46 }