1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package io.netty.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  }