Springboot整合(3)——log4j

mmayanshuo 2018-02-08

Springboot整合(3)——log4j

1. 创建log4j.properties,先把日志级别设置为debug

#logger level default is INFO

log4j.rootLogger=debug,console,file

 

#append to console

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%d%p-%m%n

 

#append to file

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=WEB-INF/logs/web.log

log4j.appender.file.MaxFileSize=1MB

log4j.appender.file.MaxBackupIndex=10000

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%d%p-%m%n

 

#Debug

log4j.logger.java.sql.Connection=debug

log4j.logger.java.sql.Statement=debug

log4j.logger.java.sql.PreparedStatement=debug

 

3. 在pom中增加log4j的依赖

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-log4j</artifactId>

            <version>1.3.8.RELEASE</version>

        </dependency>

根据我们以前使用spring的经验,到此log4j应该就算配置好了,试一下,启动项目


Springboot整合(3)——log4j

 

发现控制台打印的日志仍然是info级别,即配置文件中的debug设置并未生效。这是springboot中使用log4j的一个特殊的地方(至少本文使用的版本是这样),只是引入spring-boot-starter-log4j还不够,还需要做一个特殊配置,排除spring-boot-starter对spring-boot-starter-logging的依赖,否则就会造成jar包冲突,无法使用log4j,我们增加如下配置:

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter</artifactId>

            <exclusions>

                <exclusion>

                    <groupId>org.springframework.boot</groupId>

                    <artifactId>spring-boot-starter-logging</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

再次测试,已经有debug信息打出来了

 

 
Springboot整合(3)——log4j
 

4. 第二步配置中将日志级别设置为了debug是为了第三步看的清楚,但如果真的使用debug级别的话, spring自身会打出大量的debug信息,对实际开发基本无意义,所以把日志级别改回info :

log4j.rootLogger=info,console,file

之后就会有另一个问题,在访问http://localhost:8088/KnowledgeIsland/user/list时,后台不会打印sql语句,然而在开发阶段,打印sql语句对开发的意义是不言而喻的,这个时候就需要单独为一些包设置打印级别,做法就是在log4j.properties里增加子log配置(关于log4j的配置的详细内容可参考我之前的文章), 单独为我们编写的代码包开启debug级别的日志:

#children log

log4j.logger.tech.luoyu.ki=debug

再次运行,spring的debug信息已经不再打印,sql正常打印,完成


Springboot整合(3)——log4j
 

相关推荐