springboot2.x 整合 logback配置
程序员文章站
2022-03-05 11:58:29
...
直接上配置:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 默认配置,spring boot提供了logback的默认配置org/springframework/boot/logging/logback/base.xml,它引入了defaults.xml、console-appender.xml、file-appender.xml -->
<!-- defaults.xml配置了tomcat、hibernate的日志级别,规定了控制台及文件的输出格式 -->
<!-- console-appender.xml使用了defaults.xml规定的控制台输出格式 -->
<!-- file-appender.xml使用了defaults.xml规定的文件输出格式,并会按照大小和时间分片,文件最大10M -->
<!-- <include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="TRACE" />-->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 定义日志根目录 -->
<property name="LOG_PATH" value="/usr/local/log/" />
<!-- 定义应用名称 -->
<property name="APP_NAME" value="config-center" />
<!-- Appender to log to console -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- ${CONSOLE_LOG_PATTERN} 在defaults.xml中 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前Log文件名 -->
<File>${LOG_PATH}${APP_NAME}-info.log</File>
<!-- ThresholdFilter:临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>%d [%t] %5p %c:%L - %m%n</pattern>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录,日志按天分类压缩保存-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<FileNamePattern>${LOG_PATH}${APP_NAME}/info/%d{yyyy-MM-dd}-%i.log.gz</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
</appender>
<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前Log文件名 -->
<File>${LOG_PATH}${APP_NAME}-error.log</File>
<!--LevelFilter: 级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。有以下子节点:
<level>:设置过滤级别
<onMatch>:用于配置符合过滤条件的操作
<onMismatch>:用于配置不符合过滤条件的操作-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d [%t] %5p %c:%L - %m%n</pattern>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录,日志按天分类压缩保存-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>256MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<FileNamePattern>${LOG_PATH}${APP_NAME}/error/%d{yyyy-MM-dd}-%i.log.gz</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
</appender>
<!-- 开发、测试环境 -->
<springProfile name="dev">
<logger name="com.leolee.eurakaconsumer" level="INFO" />
<logger name="org.springframework.web" level="INFO"/>
<root level="INFO">
<appender-ref ref="console"/>
</root>
</springProfile>
<!-- 生产环境 -->
<springProfile name="test">
<logger name="com.leolee.eurakaconsumer" level="ERROR" />
<logger name="org.springframework.web" level="INFO"/>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="INFO_FILE"/>
</root>
</springProfile>
</configuration>
注意:logback文件名为logback-spring.xml,因为带spring后缀的可以使用<springProfile>这个标签
配置过程中遇到的问题:
增加了配置之后,springboot启动完全不输出日志,spring的日志都没有了
解决:增加如下配置
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
错误原因如下:
spring boot提供了logback的默认配置org/springframework/boot/logging/logback/base.xml
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</included>
它引入了defaults.xml
、console-appender.xml
、file-appender.xml
defaults.xml
配置了tomcat、hibernate的日志级别,规定了控制台及文件的输出格式。
<included>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%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}}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%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}}"/>
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
<logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
<logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
<logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
</included>
console-appender.xml
使用了defaults.xml
规定的控制台输出格式。
<included>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
</included>
file-appender.xml
使用了defaults.xml
规定的文件输出格式,并会按照大小和时间分片,文件最大10M。
<included>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
<maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
</rollingPolicy>
</appender>
</included>
问题解决参考:https://blog.csdn.net/wangjun5159/article/details/104315610
推荐阅读
-
Apache2.4+PHP5.6+MySQL5.6整合配置
-
Spring 整合多个配置文件的方法
-
spring 整合 mybatis 中数据源的几种配置方式(总结篇)
-
详解spring cloud config整合gitlab搭建分布式的配置中心
-
spring 整合 mybatis 中数据源的几种配置方式(总结篇)
-
Spring 整合多个配置文件的方法
-
详解Spring Boot配置使用Logback进行日志记录的实战
-
详解spring cloud config整合gitlab搭建分布式的配置中心
-
Spring-Data-JPA整合MySQL和配置的方法
-
Apache2.2以上版本与Tomcat整合配置及负载均衡实现