Java日志框架——不同日志框架转换,日志记录请求的Level值不能一一映射

不同的日志框架中,日志记录请求的Level值的可取值范围不尽相同。比如常见的几个日志框架中,日志记录请求的Level值的可取值范围分别如下:
1)Java Logging API
FINEST < FINER < FINE < CONFIG < INFO < WARNING < SEVERE

2)Log4J
TRACE < DEBUG < INFO < WARN < ERROR < FATAL

3)SLF4J
trace < debug < info < warn < error

4)JCL
trace < debug < info < warn < error < fatal 

当进行“JCL,Log4J,Java Logging API等到SLF4J(或者相反方向)”的转换时,很有可能发生“由于进行转换的两个日志框架的日志记录请求的Level值的可取值范围不同,而导致转换前后日志记录请求的Level值不能一一映射”的情况。
比如当进行“Java Logging API到SLF4J”的转换时,Java Logging API中的“FINEST”这个Level的日志记录请求就会丢失;当进行“JCL到SLF4J”的转换时,JCL中的“error和fatal”这两个Level的日志记录请求都会转换成SLF4J下的“error”这个Level的日志记录请求。

备注:
另外一个Level是日志记录类的Level。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class Main {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Main.class);
        logger.info("hello world");
    }
}
以上代码片段"logger.info("hello world");"中的“info”是日志记录请求的Level值。
<logger name="Main" level="debug" additivity="true"/>
以上配置中的“debug”是日志记录类的Level值
同一个日志框架中,日志记录请求的Level值和日志记录类的Level值的可取值范围一般不同。

你可能感兴趣的:(Java日志框架——不同日志框架转换,日志记录请求的Level值不能一一映射)