简介
本文介绍SpringBoot的日志配置。
综述
所有配置项
Spring的Envrionment到系统属性的转换
Spring Environment | System Property | Comments |
---|---|---|
logging.exception-conversion-word | LOG_EXCEPTION_CONVERSION_WORD | 在记录异常时使用的转换字。 |
logging.file.name | logging.file | 如果定义,在默认的日志配置中使用 |
logging.file.path | LOG_PATH | 如果定义,在默认的日志配置中使用 |
logging.pattern.console | logging.pattern.console | 日志模式使用控制台(stdout)。(只支持默认logback设置。) |
logging.pattern.file | FILE_LOG_PATTERN | 日志模式中要使用的文件(如果log_file启用)。(只支持默认logback设置。) |
logging.pattern.levelFILE | LOG_LEVEL_PATTERN | 格式来呈现的日志级别(默认为5P)。(只支持默认logback设置。) |
PID | PID | 当前的处理进程(process)ID(如果能够被发现且还没有作为操作系统环境变量被定义) |
比如:定义logging.file.path=logs,那么在logback-spring.xml中,可以直接用${LOG_PATH}来使用。
指定配置文件
Spring Boot 的 logback 默认使用 src/main/resources 目录下的 logback.xml 或 logback-spring.xml 作为配置文件。Spring Boot 官方推荐使用 logback-spring.xml,因为可以在日志输出的时候引入一些 Spring Boot 特有的配置项。
也可指定配置文件: logging.config=classpath:logback-confg.xml
其他:由于日志是在ApplicationContext被创建之前初始化的,所以不可能在Spring的@Configuration文件中通过@PropertySources控制日志。系统属性和平常的Spring Boot外部配置文件能正常工作
日志级别设置
法1:application.yml的logging.level.*
默认为INFO。下面两种格式常用:
- logging.level.root=WARN # root 日志以 WARN 级别输出信息;
- logging.level.com.example.a=DEBUG # 指定包下的类以 DEBUG 级别输出;
级别从高到低:OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL
法2:命令行控制
java -jar D:\demo.jar –debug
法3: application.yml的debug
debug=true
该属性置为true时,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但你自己应用的日志并不会输出为DEBUG级别。
指定日志文件
设置 logging.file.name 或者 logging.file.path:
- logging.file.name
设置日志文件:支持绝对路径、相对路径,相对路径的话是相对应用的根目录,比如 logging.file.name=logs/demo.log;
默认:spring.log - logging.file.path
设置日志路径:支持绝对路径、相对路径,比如 logging.file.path=logs,日志文件默认会存为 spring.log;
默认:根路径/LOG_PATH_IS_UNDEFINED/
logging.file.name | logging.file.path | 描述 | 示例 |
不指定 | 不指定 | 只记录到控制台 | |
指定 | 不指定 | 记录到:指定文件 | logging.file.name=demo.log #在项目路径下生成demo.log logging.file.name=logs/demo.log #在项目路径下生成logs/demo.log logging.file.name=e:/logs/demo.log #生成:e:/logs/demo.log |
不指定 | 指定 | 记录到:指定路径/spring.log | logging.file.path=logs #在项目路径下生成logs/spring.log logging.file.path=e:/logs/ #生成:e:/logs/spring.log |
注意:若我们只配置application.yml而不提供xml文件,若配置了logging.file.name 或者 logging.file.path,则必须配置:logging.level.*,否则,将没有任何日志产生。
比如:
logging: file: name: demo.log level: root: info
此时,将会生成:项目根路径/demo.log
分组
日志级别
批量设置日志级别,比如设定com.michael.controller 和 com.michael.service为同一组(包和包之间用英文逗号分隔):
logging.group.michael=com.michael.controller,com.michael.service logging.level.michael=INFO
Spring Boot 默认提供两个日志组:
- logging.group.web=org.springframework.core.codec,org.springframework.http,org.springframework.web
- logging.group.sql=org.springframework.jdbc.core
其他配置
- logging.file.max-size
- 最大日志文件大小。默认为10MB。
- logging.file.max-history
- 最大归档文件保存的天数。默认为7
- logging.pattern.console
- 控制台输出的日志模式。默认如下
%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
- 控制台输出的日志模式。默认如下
- logging.pattern.dateformat
- 日志的日期格式。默认为:yyyy-MM-dd HH:mm:ss.SSS
- logging.pattern.file
- 日志文件使用的日志模式。默认为:
%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
- 日志文件使用的日志模式。默认为:
- logging.pattern.level
- 日志级别。默认为:%5P
- logging.pattern.rolling-file-name
- 文件超过max-size时保存的日志的的文件名。默认为:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
- %i:若一天中多次超过了max-size,则给这些文件添加序号。
- 若不想压缩,可以将gz去掉或者改掉,比如:${LOG_FILE}.%d{yyyy-MM-dd}.%i.log
请先
!