不操千曲而后晓声,观千剑而后识器。这篇文章主要讲述SpringBoot--日志配置--application.yml相关的知识,希望能为你提供帮助。
?
简介
本文介绍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.40logger39)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.40logger39 : %m%n$LOG_EXCEPTION_CONVERSION_WORD:-%wEx
- logging.pattern.level
- 日志级别。默认为:%5P
- logging.pattern.rolling-file-name
- 文件超过max-size时保存的日志的的文件名。默认为:$LOG_FILE.%dyyyy-MM-dd.%i.gz
- %i:若一天中多次超过了max-size,则给这些文件添加序号。
- 若不想压缩,可以将gz去掉或者改掉,比如:$LOG_FILE.%dyyyy-MM-dd.%i.log
【SpringBoot--日志配置--application.yml】
推荐阅读