美文网首页Java编程程序员
SpringBoot系列之切换log4j日志框架

SpringBoot系列之切换log4j日志框架

作者: smileNicky | 来源:发表于2019-11-23 21:59 被阅读0次

    SpringBoot系列之使用切换log4j日志框架

    ok,在pom文件右键->Diagrams->show Dependencies....,如图,找到spring-boot-starter-logging,可以看到SpringBoot的日志实现默认依赖与logback,ok,如果你对这些知识不是很理解的,建议先看我Springboot专栏的日志系列博客:https://smilenicky.blog.csdn.net/category_9195353.html

    本博客要实现的是切换默认日志框架为log4j,当然是不建议这样做的,因为log4j有性能问题,所以其作者才开发了logback,不过作为学习的话,还是可以学一下怎么切换Springboot默认的日志框架

    先去slf4j官网拿一张图:图示,切换日志框架,为了避免冲突,一般都是先排除日志框架的实现jar,然后再将之前博客提到的偷梁换柱jar,比如log4j-to-slf4j.jar等等先排除,然后再引入对应的日志实现jar,如图所示的slf4j-log4j12.jar,因为本博客并非入门教程,所以学习之前请先参考我之前Springboot日志方面的博客,再来学习

    在这里插入图片描述
    ok,基于slf4j官方提供的知识,我们就可以实践了,首先选中logback-classic.jar(logback实现jar)、log4j-to-slf4j.jar(将log4j API强制切换回slf4j的偷梁换柱jar),然后右键,选择exclusion
    在这里插入图片描述

    ok,再次打开pom文件,可以看到idea自动帮我们exclusion一些jar了

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <artifactId>logback-classic</artifactId>
                        <groupId>ch.qos.logback</groupId>
                    </exclusion>
                    <exclusion>
                            <artifactId>log4j-to-slf4j</artifactId>
                        <groupId>org.apache.logging.log4j</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
    

    ok,避免日志冲突,exclusion了logback的实现jar和偷梁换柱的log4j-to-slf4j之后,我们还需要引入log4j的实现jar

    <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </dependency>
    

    ok,这是slf4j官网的说法,但是我发现在一些旧的版本SpringBoot是有提供spring-boot-starter-log4j这个场景启动器的,所以我们可以更简便的做log4j引入

    直接exclusion spring-boot-starter-logging:

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    

    然后直接引入log4j的场景启动器,建议加上版本,因为有些版本并没有提供log4j配置,本博客是换回1.5.7才支持的,2.2.1的版本仲裁都没提供对应版本的

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j</artifactId>
                <version>1.3.8.RELEASE</version>
            </dependency>
    

    ok,然后在resources直接丢log4j.properties

    # LOG4J rootCategory config
    log4j.rootCategory=INFO, stdout, file
    # LOG4J console config
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    
    # root日志输出
    log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.file.file=logs/springboot.log
    log4j.appender.file.DatePattern='.'yyyy-MM-dd
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
    
    
    

    启动SpringBoot日志:


    在这里插入图片描述

    相关文章

      网友评论

        本文标题:SpringBoot系列之切换log4j日志框架

        本文链接:https://www.haomeiwen.com/subject/tyrkwctx.html