所有分类
  • 所有分类
  • 未分类

SpringBoot–application.yml的日志配置

简介

本文介绍SpringBoot的日志配置。

综述

所有配置项

Spring的Envrionment到系统属性的转换

Spring EnvironmentSystem PropertyComments
logging.exception-conversion-wordLOG_EXCEPTION_CONVERSION_WORD在记录异常时使用的转换字。
logging.file.namelogging.file如果定义,在默认的日志配置中使用
logging.file.pathLOG_PATH如果定义,在默认的日志配置中使用
logging.pattern.consolelogging.pattern.console日志模式使用控制台(stdout)。(只支持默认logback设置。)
logging.pattern.fileFILE_LOG_PATTERN日志模式中要使用的文件(如果log_file启用)。(只支持默认logback设置。)
logging.pattern.levelFILELOG_LEVEL_PATTERN格式来呈现的日志级别(默认为5P)。(只支持默认logback设置。)
PIDPID当前的处理进程(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.namelogging.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.loglogging.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

其他配置

  1. logging.file.max-size
    1. 最大日志文件大小。默认为10MB。
  2. logging.file.max-history
    1. 最大归档文件保存的天数。默认为7
  3. logging.pattern.console
    1. 控制台输出的日志模式。默认如下
      1. %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}
  4. logging.pattern.dateformat
    1. 日志的日期格式。默认为:yyyy-MM-dd HH:mm:ss.SSS
  5. logging.pattern.file
    1. 日志文件使用的日志模式。默认为:
      1. %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}
  6. logging.pattern.level
    1. 日志级别。默认为:%5P
  7. logging.pattern.rolling-file-name
    1. 文件超过max-size时保存的日志的的文件名。默认为:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
    2. %i:若一天中多次超过了max-size,则给这些文件添加序号。
    3. 若不想压缩,可以将gz去掉或者改掉,比如:${LOG_FILE}.%d{yyyy-MM-dd}.%i.log

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录