Logback 基础应用
Logback 基础应用
1、示例配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!--定义变量值从Spring Context获取-->
<springProperty name="app.name" scope="context" source="spring.application.name" defaultValue="app"/>
<springProperty name="log.file" scope="context" source="logging.file"/>
<springProperty name="log.path" scope="context" source="logging.path"/>
<!--日志存储路径-->
<property name="FILE_PATH" value="${log.path:-${user.home}/${app.name}}"/>
<!--Appender一定要放到引用前面,是有先后顺序的-->
<appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!--日志文件名称默认值:${app.name}-->
<property name="FILE_INFO_NAME" value="${log.file:-${app.name}.log}"/>
<!--日志文件完整路径-->
<property name="FILE_INFO_FILE" value="${FILE_PATH}/${FILE_INFO_NAME}"/>
<!-- 定义INFO级别APPENDER -->
<appender name="FILE_INFO_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${FILE_INFO_FILE}</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${FILE_INFO_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
<!--日志文件保留数量-->
<maxHistory>30</maxHistory>
<!--当天日志文件大于100MB切换新文件,如果当天超过了则会在文件后(%i)添加序号从0开始-->
<maxFileSize>100MB</maxFileSize>
<!--最多保留3GB-->
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [traceId:%X{traceId}] %logger{36} [%class:%line] - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--日志文件名称默认值:${app.name}-->
<property name="FILE_RUN_ERROR_NAME" value="${log.file:-${app.name}.log}_error.log"/>
<!--日志文件完整路径-->
<property name="FILE_RUN_ERROR_FILE" value="${FILE_PATH}/${FILE_RUN_ERROR_NAME}"/>
<!-- 定义INFO级别APPENDER -->
<appender name="FILE_RUN_ERROR_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${FILE_RUN_ERROR_FILE}</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${FILE_RUN_ERROR_FILE}.%d{yyyy-MM-dd}.%i</fileNamePattern>
<!--日志文件保留数量-->
<maxHistory>20</maxHistory>
<!--当天日志文件大于100M切换新文件,如果当天超过了则会在文件后(%i)添加序号从0开始-->
<maxFileSize>100MB</maxFileSize>
<!--最多保留2GB-->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [traceId:%X{traceId}] %logger{36} [%class:%line] - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!--不匹配直接拒绝,后续过滤器也不会执行-->
<onMismatch>DENY</onMismatch>
<!--匹配则继续交由其他过滤器-->
<onMatch>NEUTRAL</onMatch>
</filter>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
<expression>
<![CDATA[
return throwableProxy != null && !throwableProxy.getClassName().contains("BusinessException");
]]>
</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<!--匹配则进行写入-->
<OnMatch>ACCEPT</OnMatch>
</filter>
</appender>
<logger name="org.springframework" level="INFO"/>
<!-- local 环境-->
<springProfile name="local">
<logger name="org.mybatis" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus" level="DEBUG"/>
<root level="DEBUG">
<appender-ref ref="CONSOLE_APPENDER"/>
</root>
</springProfile>
<!-- dev,sit,uat,prod 环境-->
<springProfile name="dev,sit,uat,prod">
<logger name="org.mybatis" level="INFO"/>
<logger name="com.baomidou.mybatisplus" level="INFO"/>
<root level="INFO">
<appender-ref ref="FILE_INFO_APPENDER"/>
<appender-ref ref="FILE_RUN_ERROR_APPENDER"/>
</root>
</springProfile>
</configuration>
2、过滤异常
上面示例中用到了 JaninoEventEvaluator 过滤器,用来过滤程序异常单独额外记录到日志文件中,便于收集排查错误日志。需要额外增加依赖包:
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.12</version>
</dependency>
具体如何配置可以参照文档,或者直接启动调试看里面有哪些属性,就知道怎么写了,例如:ch.qos.logback.classic.boolex.JaninoEventEvaluator 方法 evaluate 增加断点,调试信息如下图:


浙公网安备 33010602011771号