springboot2.0整合logback日志

springboot本身内置了日志功能,然而想要输入想要的日志,并且输出到磁盘。

依赖

springboot的pom文件会引一个parent

     
        org.springframework.boot
        spring-boot-starter-parent
        2.0.0.RELEASE
    

点进去这个parent,会有这个dependency


        org.springframework.boot
        spring-boot-dependencies
        2.0.0.RELEASE
        ../../spring-boot-dependencies
    

再点进去


      org.springframework.boot
      spring-boot-starter-logging
      2.0.0.RELEASE
      compile
    

再点,这些都是原有的日志包,所以,不必再引依赖了,直接用就ok了。


    
      ch.qos.logback
      logback-classic
      1.2.3
      compile
    
    
      org.apache.logging.log4j
      log4j-to-slf4j
      2.10.0
      compile
    
    
      org.slf4j
      jul-to-slf4j
      1.7.25
      compile
    

配置

1、官方推荐使用的xml名字的格式是:logback-spring.xml而不是logback.xml,因为带spring后缀的可以使用这个标签。

通过Profile可以针对不同运行时Profile使用不同的日志配置。

2、在resource下创建logback-spring.xml文件。

(1)Logback:logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy

(2)Log4j:log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml

(3)Log4j2: log4j2-spring.xml, log4j2.xml

(4)JDK(Java Util Logging):logging.properties

如果你不想使用上面推荐的名字,可以在application.yml中通过logging.config属性来指定自定义的名字

3、configuration根节点

(1)scan,默认值为true,当配置文件发生改变时,是否重新加载

(2)scanPeriod,设置监测配置文件是否修改的时间间隔,当scan为true时,此属性生效,默认时间单位是ms,默认的时间间隔是1分钟。

(3)debug,默认值为false,是否打印logback内部日志信息,用于实时查看logback运行状态。

4、子节点root

root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。

level用来设置打印级别,大小写无关,trace->debug->info->warn->error->all->off,默认debug

可以包含零个或多个元素,标识这个appender将会添加到这个logger


 
 

5、子节点

每个logger都关联到logger上下文,默认上下文名称为“default",但可以使用设置成其他名字,用于区分不同的应用程序的记录。一旦设置,不能修改,保以通过%contextName来打印日志上下文名称,一般来说我们不用这个属性,可有可无。

6、子节点

用来定义变量值的标签,有两个属性,name和value,其中name的值是变量的名称,value的值是变量定义的值,通过定义的值会被插入到logger上下文件中,定义变量后,可以使用${}来使用变量。


7、子节点

appender用来格式化日志输出节点,有两个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。

(1)%d{HH: mm:ss.SSS} 日志输出时间

(2)%thread 输出日志的进程名字,这个Web应用以及异步任务处理中很有用。

(3)%-5level 日志级别,并且使用5个字符左对齐

(4)%logger{36}  日志输出者的名字

(5)%msg  日志消息

(6)%n  平台的换行符

(7)RollingFileAppender

用于切分文件日志


 
 
 
 ERROR
 
 DENY
 
 ACCEPT
 
 
 ${logback.logdir}/info.${logback.appname}.log
 
 
 
 ${logback.logdir}/info.${logback.appname}.%d{yyyy-MM-dd}.log
 
 90
 
 
 
 
 
 UTF-8
 %d [%thread] %-5level %logger{36} %line - %msg%n
 


 
 
 Error
 
 
 ${logback.logdir}/error.${logback.appname}.log
 
 
 
 ${logback.logdir}/error.${logback.appname}.%d{yyyy-MM-dd}.log
 
 90
 
 
 
 
 
 UTF-8
 %d [%thread] %-5level %logger{36} %line - %msg%n
 

8、子节点

用来设置某一个包或者具体的某一个类的日志打印级别、以及指定

(1)name:用来指定受此logger约束的某一个包或者具体的某一个类。

(2)level:用来设置打印级别,大小写无关。还有一个特殊的值inherited或同义词null,代表强制执行上级的级别,如果未设置此属性,那么当前logger将会继承上级的级别。

(3)additivity:是否向上级logger传递打印信息,默认true。

例子:

 

没有设置addtivity,默认为true,将此logger的打印信息向上级传递,没有appender,此logger本身不打印任何信息,所以会将日志信息传递给上级,一般为root,再交给root配置好的appender处理。

(4)多环境的日志输出


 ...
 
 
 
  
 
 
 
 
 
  
 
 

 

完整示例



	
	
	
	
		
			%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c - %m%n
		
	
	
	
		
		${log.path}/${application.name}/info.log
		
		true
		
		
			${log.path}/${application.name}/%d{yyyy-MM-dd}/info/info-%i.zip
			
			50MB
			
			7
			
			2GB
		
		
		
			%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c - %m%n
		
		
		
			INFO
			ACCEPT
			DENY
		
	
	
	
		
		${log.path}/${application.name}/warn.log
		
		true
		
		
			${log.path}/${application.name}/%d{yyyy-MM-dd}/warn/warn-%i.zip
			
			50MB
			
			15
			
			2GB
		
		
		
			%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c - %m%n
		
		
		
			WARN
			ACCEPT
			DENY
		
	
	
	
		
		${log.path}/${application.name}/error.log
		
		true
		
		
			${log.path}/${application.name}/%d{yyyy-MM-dd}/error/error-%i.zip
			
			50MB
			
			15
			
			2GB
		
		
		
			%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c - %m%n
		
		
		
			ERROR
			ACCEPT
			DENY
		
	
 
	
	
	
	
	
 
	
	
		
			
		
	
	
	
		
			
			
			
		
	
	
	
		
			
			
			
		
	

 

你可能感兴趣的:(秒扒Spring)