SpringBoot学习---第二篇:日志配置

目录

1 配置 logback

1.1 日志格式

1.2 日志输出

1.3 文件保存

1.4 配置日志文件

2 配置 log4j2

2.1 添加依赖

2.2 配置文件


Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。

1 配置 logback

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。

1.1 日志格式

SpringBoot 的默认输出的日志格式如下:

输出如下元素:

  • 时间日期:精确到毫秒,可以用于排序
  • 日志级别:ERROR、WARN、INFO、DEBUG、TRACE
  • 进程ID
  • 分隔符:采用---来标识日志开始部分
  • 线程名:方括号括起来(可能会截断控制台输出)
  • Logger名:通常使用源代码的类名
  • 日志内容:我们输出的消息

Logback 是没有FATAL级别的日志,它将被映射到ERROR。

日志级别从低到高分为:TRACE< DEBUG< INFO< WARN< ERROR< FATAL。

1.2 日志输出

SpringBoot 默认为我们输出的日志级别为INFO、WARN、ERROR,如需要使用 “debug”,可以通过以下方式开启

  • 命令模式配置: java -jar myapp.jar --debug
  • 资源文件配置:在 application.properties 配置 “debug=true”

1.3 文件保存

默认情况下,SpringBoot 仅将日志输出到控制台,不会写入到日志文件中去。如果除了控制台输出之外还想写日志文件,则需要在 application.properties 设置 logging.file 或 logging.path 属性。

日志文件在达到10 MB 时进行切割,默认情况下会记录 ERROR、WARN、INFO 级别消息。

  • logging.file.max-size:限制日志文件大小
  • logging.file.max-history:限制日志保留天数

1.4 配置日志文件

默认情况下,Logback 用 INFO 级别输出到控制台,不会保存到文件。

spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可。

1.4.1 默认情况

测试代码:

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/log")
public class LogController {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("writelog")
    public String writeLog() {
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warn message");
        logger.error("This is an error message");
        return "OK";
    }
}

在浏览器中输入http://localhost:8080/log/writelog 将会看到以下结果:

没有配置任何其它配置,就可以看到来自logback root logger的输出信息。我们注意到debug级别的日志没有记录下来,那是因为Spring Boot为Logback提供了默认的配置文件 base.xml。

base.xml内容:






	
	
	
	
	
		
		
	

base.xml 中 root logger的日志级别被重写为Info级别,这就是上面例子中debug级别的日志没有打印的原因。

1.4.2 通过application.properties文件对Logback进行配置

配置日志文件:log.log 

配置 com.example.demo.controller 日志级别为:debug

logging.file=log.log
logging.level.com.example.demo.controller = debug

结果:

SpringBoot学习---第二篇:日志配置_第1张图片

1.4.3 通过额外的文件配置Logback

在 src/main/resources 下创建 logback-spring.xml 文件,实例如下:



    

   
    

    
    

    
    
        
            
                ${PATTERN}
            
        
        
    

    
    
        
        
            
                
                ${LOG_HOME}/info/info.%d{yyyy-MM-dd}.log
                
                30
            
            
                ${PATTERN}
            
            
            
                100MB
            
        
          
          
              
                ${LOG_HOME}/error/error.%d{yyyy-MM-dd}.log  
                30  
            
            
                ${PATTERN}
            
            
            
                100MB
            
            
                ERROR
                ACCEPT
                DENY
              
         
        
            
            
        

    

1.4.1

<springProfile> 标签使我们让配置文件更加灵活,它可以选择性的包含或排除部分配置


    



    



    

1.4.2  <appender>

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

控制台输出ConsoleAppender:ch.qos.logback.core.ConsoleAppender 

输出到文件 RollingFileAppender:ch.qos.logback.core.rolling.RollingFileAppender

1.4.3  

用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。有三个属性:

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

level: 用来设置打印级别:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF

addtivity: 是否向上级loger传递打印信息。默认是true。

2 配置 log4j2

主要介绍spring boot集成log4j2日志框架。

2.1 添加依赖

打开pom.xml文件,去除logback的依赖包,添加log4j2的依赖包

SpringBoot学习---第二篇:日志配置_第2张图片

2.2 配置文件

默认的properties配置对log4j2不够友好,我们应用外部配置文件,在资源文件夹src/main/resources下添加log4j2.xml或者log4j2-spring.xml,启动后spring boot自动加载,配置文件的示例如下:



	
		
		%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n
	
 
	
		
			
		
	
	
	
		
		
			
		
	
 

 

参考:

官方文档

Spring Boot 日志配置(超详细)

Spring Boot系列教程六:日志输出配置log4j2

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java开发,Spring,Boot)