SpringBoot--日志配置--application.yml

Posted IT利刃出鞘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot--日志配置--application.yml相关的知识,希望对你有一定的参考价值。


简介

        本文介绍SpringBoot的日志配置。

综述

所有配置项

SpringBoot--日志配置--application.yml_spring

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

其他配置

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


以上是关于SpringBoot--日志配置--application.yml的主要内容,如果未能解决你的问题,请参考以下文章

吊炸天,springboot的多环境配置一下搞明白了!

吊炸天,springboot的多环境配置一下搞明白了!

吊炸天,springboot的多环境配置一下搞明白了!

Spring Boot 配置文件同步 Maven 配置文件

springboot配置日志(Slf4j)

网红框架SpringBoot2.x之定制参数浅析