日志配置的一些思考
- 其他
- 2025-07-21 19:27:15

日志配置的一些思考 背景说明基础配置抽取子服务扩展配置 背景
基本所有的系统都需要完善的日志配置, 这里是一些常用的配置. 但是没有本地验证, 只能提供一份配置思路.
说明不可直接用, 会报错, 提供一种配置思路. 不可直接用, 会报错, 提供一种配置思路. 不可直接用, 会报错, 提供一种配置思路.
基础配置抽取这里是抽取的基础日志: basic-logback.xml
<?xml version="1.0" encoding="UTF-8"?> <included> <property name="pattern" value="%date %level [%thread] %logger{10} [%file : %line] %msg%n"/> <appender name="spring" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/spring.log</file> <encoder> <pattern>${pattern}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LOG_HOME}/spring.%i.log.gz</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>300M</maxFileSize> </triggeringPolicy> </appender> <appender name="accessAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/access.log</file> <encoder> <pattern>%date --- %level --- [%X{X-B3-TraceId}, %X{X-B3-SpanId}, %X{X-Span-Export}] --- [%thread] --- %logger{10} --- [%file : %line] %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LOG_HOME}/access.%i.log.gz</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>300M</maxFileSize> </triggeringPolicy> </appender> <appender name="warnError" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/warn_error.log</file> <encoder> <pattern>${pattern}</pattern> </encoder> <!-- 自定义过滤器 --> <filter class="com.xxx.xxx.xx.ExceptionThresholdFiler"> <level>WARN</level> <exceptionClazz>com.xxx.xxx.xxx.BusinessException</exceptionClazz> <onMatch>EDNY</onMatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LOG_HOME}/warn_error.%i.log.gz</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>300M</maxFileSize> </triggeringPolicy> </appender> <appender name="businessError" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/business_error.log</file> <encoder> <pattern>${pattern}</pattern> </encoder> <!-- 自定义过滤器 --> <filter class="com.xxx.xxx.xx.ExceptionThresholdFiler"> <level>WARN</level> <exceptionClazz>com.xxx.xxx.xxx.BusinessException</exceptionClazz> <onMatch>EDNY</onMatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LOG_HOME}/business_error.%i.log.gz</fileNamePattern> <minIndex>1</minIndex> <maxIndex>20</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>300M</maxFileSize> </triggeringPolicy> </appender> <!-- 自定义Logger --> <logger name="com.xxx.xxx.xxx.AccessLogRecorder" level="info" additivity="false"> <appender-ref ref="accessAppender"/> </logger> <root level="info"> <appender-ref ref="spring"/> <appender-ref ref="warnError"/> <appender-ref ref="businessError"/> </root> </included> 子服务扩展配置子服务配置: servie1-logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false" scan="true" scanPeriod="3 seconds"> <!-- dev环境生效 --> <springProfile name="dev"> <property name="LOG_HOME" value="./logs"/> </springProfile> <!-- 非dev环境生效 --> <springProfile name="!dev"> <property name="LOG_HOME" value="${logging.path}"/> </springProfile> <!-- 外部公共配置 --> <include resource="basic-logback.xml"></include> <appender name="xxxxxService" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/service.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LOG_HOME}/service/service.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>${pattern}</pattern> </encoder> </appender> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${pattern}</pattern> </encoder> </appender> <logger name="com.xxx.xxx" level="info" additivity="true"> <appender-ref ref="xxxxxService"></appender-ref> </logger> <springProfile name="dev"> <root> <appender-ref ref="console"/> </root> </springProfile> </configuration>