自定义日志配置
spring boot2.2.4官方文档
logback中文文档
1)spring boot可以适应所有日志框架,只需在类路径下包含相应的依赖来激活各种日志系统。
2)spring boot底层使用slf4j + logback框架来实现日志记录,所以如果想要自定义logback配置,就无需添加相关依赖了(spring-booot-stater中已包含相关依赖)
3)在类路径下放置自定义日志配置文件(xml配置文件),spring boot就不会使用它本身的默认日志配置了
4)上图是spring boot官方文档的提示内容,意思是:根据您的日志记录系统,将加载相应的文件使用。即如果我们使用logback日志框架,那么可以使用logback-spring.xml
、logback-spring.groovy
、logback.xml
、logback.groovy
之一作为配置文件来加载。
5)spring boot官方建议使用logback-spring.xml
作为logback框架的日志配置文件(例如:使用logback-spring.xml
而不是logback.xml
),因为带-spring
后缀的配置文件可以使用spring boot提供的一些高级功能,如profile多环境日志输出
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
logback-spring.xml
<?xml version="1.0" encoding="utf-8" ?>
<!--
1) 根节点<configuration>,包含下面三个属性:
scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。-->
<configuration scan="true" scanPeriod="60" debug="false">
<!--控制台输出日志格式-->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss} -- %-5level -- [%thread] -- %logger{50} --- %msg %n}"/>
<!--文件输出日志格式-->
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd hh:mm:ss} -- %-5level -- [%thread] -- %logger{50} --- %msg %n}"/>
<!--
Appender: 设置日志信息的去向,常用的有以下几个
1) ch.qos.logback.core.ConsoleAppender (控制台)
2) ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新文件)
3) ch.qos.logback.core.FileAppender (文件)
-->
<!--控制台配置-->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<!--当环境是dev开发环境时,这部分配置才生效-->
<springProfile name="dev">
<!--日志输出格式-->
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</springProfile>
<!--当环境不是dev开发环境时,这部分配置才生效-->
<springProfile name="!dev">
<!--日志输出格式-->
<encoder>
<pattern>--%logger{50} --- %msg %n</pattern>
</encoder>
</springProfile>
</appender>
<!--日志记录文件配置-->
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--当环境是production生产环境时,这部分配置才生效
即在production生产环境上,我们才将日志信息记录到日志文件中-->
<springProfile name="production">
<!--日志文件保存路径,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建 -->-->
<file>D:\idea\logs\example-logging.log</file>
<!--基于大小和时间的轮转策略,当日志内容超出文件大小限制后,会自动生成一个文件来继续记录和重命名-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--当日志内容超出文件大小限制后,会自动生成一个文件来继续记录,文件按下面格式命名-->
<fileNamePattern>D:\idea\logs\example-logging-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!--文件最大限制,默认10MB-->
<maxFileSize>10MB</maxFileSize>
<!--文件最大保存周期,默认7天-->
<maxHistory>7</maxHistory>
<!--所有归档文件总的大小限制-->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<!--日志输出格式-->
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</springProfile>
</appender>
<!--
用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。
<logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性
name:
用来指定受此logger约束的某一个包或者具体的某一个类。
level:
用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
如果未设置此属性,那么当前logger将会继承上级的级别。
additivity:
是否向上级logger传递打印信息。默认是true。
<logger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个logger
-->
<logger name="com.cd.example.one" level="trace"/>
<logger name="com.cd.example.two" level="debug"/>
<logger name="com.cd.example.three" level="warn"/>
<!--
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。
<root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个logger
使该指定的appender生效
-->
<root level="info">
<appender-ref ref="consoleAppender"/>
<appender-ref ref="fileAppender"/>
</root>
</configuration>
来源:CSDN
作者:CD4356
链接:https://blog.csdn.net/weixin_42950079/article/details/104541519