spring boot 配置logback,logback不打印日志

spring boot 日志简介

spring boot只依赖 Commons Logging API,而不依赖其他日志(jul、logback、log4j)。要想使用logback,必须引入jcl-over-slf4j( 实现了 Commons Logging API),将jcl转接到slf4j。所有的spring boot starter都依赖了spring-boot-starter-logging,pom如下


		
			ch.qos.logback
			logback-classic
		
		
			org.apache.logging.log4j
			log4j-to-slf4j
		
		
			org.slf4j
			jul-to-slf4j
		
	

可以看到spring-boot-starter-logging引入了logback,同时将log4j、jul都转接到slf4j,这就是为什么引入jcl-over-slf4j就能使logback生效的原因。
如想修改日志级别,在application.properties中设置logging.level即可。

logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

通过logging.file修改日志文件位置。

spring boot 配置logback

类路径下新建logback.xml或者logback-spring.xml,推荐使用后者,因为它能利用spring boot既有logback配置。xml与properties方式相比,能更细粒度的控制。

spring boot提供了logback的默认配置org/springframework/boot/logging/logback/base.xml


	
	
	
	
	
		
		
	

它引入了defaults.xmlconsole-appender.xmlfile-appender.xml


defaults.xml配置了tomcat、hibernate的日志级别,规定了控制台及文件的输出格式。


	
	
	
	
	

	
	
	
	
	
	
	


console-appender.xml使用了defaults.xml规定的控制台输出格式。


	
		
			${CONSOLE_LOG_PATTERN}
		
	


file-appender.xml使用了defaults.xml规定的文件输出格式,并会按照大小和时间分片,文件最大10M。


	
		
			${FILE_LOG_PATTERN}
		
		${LOG_FILE}
		
			${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
			${LOG_FILE_MAX_SIZE:-10MB}
			${LOG_FILE_MAX_HISTORY:-0}
		
	

配置logback只输出到文件

新建logback-spring.xml 引入 file-appender.xml,没有引入 console-appender.xml,所以不会输出到控制台。



    
    
    
    
        
    

总结

spring boot使用logback

  • 引入jcl-over-slf4j
  • 如果只改变日志级别,在application.properties中配置logging.level即可
  • 细粒度的控制,新建logback-spring.xml,酌情引入defaults.xmlconsole-appender.xmlfile-appender.xml

logback不起作用,使用了其他日志

在实践中,往往遇到logback不起作用的情况,通过mvn dependency:tree 查看依赖,一般来说都是因为引入了其它日志实现(log4j、apache commons log)导致,控制台一般会有提示,这种情况,排除掉其他日志实现 即可。比如

 
            org.apache.zookeeper
            zookeeper
            
                
                    org.slf4j
                    slf4j-log4j12
                
                
                    log4j
                    log4j
                
            
        

参考

spring boot howto-logging

你可能感兴趣的:(spring,boot,logback)