1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty5.util.internal.logging;
17
18
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
21 import org.slf4j.helpers.NOPLoggerFactory;
22 import org.slf4j.spi.LocationAwareLogger;
23
24
25
26
27
28 public class Slf4JLoggerFactory extends InternalLoggerFactory {
29
30 @SuppressWarnings("deprecation")
31 public static final InternalLoggerFactory INSTANCE = new Slf4JLoggerFactory();
32
33
34
35
36 @Deprecated
37 public Slf4JLoggerFactory() {
38 }
39
40 Slf4JLoggerFactory(boolean failIfNOP) {
41 assert failIfNOP;
42 if (LoggerFactory.getILoggerFactory() instanceof NOPLoggerFactory) {
43 throw new NoClassDefFoundError("NOPLoggerFactory not supported");
44 }
45 }
46
47 @Override
48 public InternalLogger newInstance(String name) {
49 return wrapLogger(LoggerFactory.getLogger(name));
50 }
51
52
53 static InternalLogger wrapLogger(Logger logger) {
54 return logger instanceof LocationAwareLogger ?
55 new LocationAwareSlf4JLogger((LocationAwareLogger) logger) : new Slf4JLogger(logger);
56 }
57
58 static InternalLoggerFactory getInstanceWithNopCheck() {
59 return NopInstanceHolder.INSTANCE_WITH_NOP_CHECK;
60 }
61
62 private static final class NopInstanceHolder {
63 private static final InternalLoggerFactory INSTANCE_WITH_NOP_CHECK = new Slf4JLoggerFactory(true);
64 }
65 }