Java日志系统之Slf4j

目录

Slf4j

Slf4j的简单使用

Slf4j的日志绑定流程

Slf4j桥接器


Slf4j

Slf4j又称简单日志门面,Slf4j主要是为了给Java日志访问提供一套标准,规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他的日志框架。

Slf4j的简单使用

Slf4j本身也提供一个简单的日志系统,但通常不用。通常slf4j与其他日志框架绑定使用。

Slf4j的出现时间比Log4j与JUL晚,因此它们两个的接口没有根据Slf4j的文档来,因此需要多引入一个适配器来使用。像logback等日志框架出现较晚,根据Slf4j的接口实现,因此直接引入该框架就好。

下面使用JUL来测试Slf4j。引入下列依赖包。

    
        
        
            org.slf4j
            slf4j-api
            1.5.6
        

        
            org.slf4j
            slf4j-jdk14
            1.5.6
        

        
            junit
            junit
            4.12
        
    

测试

    public final static Logger logger = LoggerFactory.getLogger(TestSlf4j.class);
    @Test
    public void testJUL() throws Exception {
        logger.error("error");
        logger.info("info");
        logger.debug("debug");
        logger.trace("trace");
    }

Slf4j的日志绑定流程

  • 添加slf4j-api的依赖
  • 使用slf4j的API在项目中进行统一的日志管理
  • 绑定具体的日志实现框架(JUL与Log4j需要引入适配器依赖)
  • slf4j有且仅有一个日志实现框架,如果有多个默认使用第一个

Slf4j桥接器

当项目初始时使用了Log4j日志框架时,后续项目扩展需要换logback日志框架,如果只是单纯的更换依赖,则仍需要修改代码。此时我们就需要使用桥接器来解决这个问题。

首先是初始项目中,我们只用了log4j的日志框架就可以满足使用了

Java日志系统之Slf4j_第1张图片

Java日志系统之Slf4j_第2张图片

后续中,我们要对项目进行迭代升级,需要使用logback日志框架。如果不添加桥接器依赖的话。如下如图所示

Java日志系统之Slf4j_第3张图片

在原始代码中,会有错误提示。找不到类

Java日志系统之Slf4j_第4张图片

这时我们就需要引入对应的桥接器依赖

Java日志系统之Slf4j_第5张图片

此时迭代过后的项目也不会报错,且使用的日志框架为logback

Java日志系统之Slf4j_第6张图片

注意问题

1.jcl-over-slf4j.jar和 slf4j-jcl.jar不能同时部署。前一个jar文件将导致JCL将日志系统的选择委托给SLF4J,后一个jar文件将导致SLF4J将日志系统的选择委托给JCL,从而导致无限循环。

2.log4j-over-slf4j.jar和slf4j-log4j12.jar不能同时出现

3.jul-to-slf4j.jar和slf4j-jdk14.jar不能同时出现

4.所有的桥接都只对Logger日志记录器对象有效,如果程序中调用了内部的配置类或者是Appender,Filter等对象,将无法产生效果。

你可能感兴趣的:(java,单元测试,缓存)