Parcourir la source

feat(logback): 添加错误日志文件分离功能

- 移除通用属性注释并优化配置结构
- 更新开发环境配置注释描述
- 为SyncLogFile appender添加编码器配置
- 新增ErrorLogFile appender用于错误日志分离
- 配置错误日志过滤器仅接受ERROR级别日志
- 设置错误日志文件滚动策略和大小限制
- 在根日志记录器中添加错误日志appender引用
- 为生产环境也添加相同的错误日志处理配置
ChenYu il y a 7 mois
Parent
commit
fb4f491c23
1 fichiers modifiés avec 38 ajouts et 5 suppressions
  1. 38 5
      src/main/resources/logback-spring.xml

+ 38 - 5
src/main/resources/logback-spring.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
-    <!-- 通用属性 -->
     <property name="LOG_PATTERN_DEFAULT"
               value="%d{yyyy-MM-dd HH:mm:ss.SSS} | %highlight(%-5level) | %green(%thread) | %magenta(%X{traceId:-no-trace}) | %boldCyan(%logger{50}) | %yellow(%method:%line) | %msg%n%red(%ex{full})"/>
     <property name="LOG_PATTERN"
@@ -8,7 +7,7 @@
     <property name="LOG_HOME" value="./logs" />
     <springProperty scope="context" name="APP_NAME" source="spring.application.name" defaultValue="unknown"/>
 
-    <!-- 开发环境:彩色详细日志 -->
+    <!-- 开发环境 -->
     <springProfile name="dev">
         <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
             <encoder>
@@ -16,7 +15,7 @@
                 <charset>UTF-8</charset>
             </encoder>
         </appender>
-        <appender name="SyncLogFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <appender name="SyncLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
             <File>${LOG_HOME}/${APP_NAME}.log</File>
             <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                 <FileNamePattern>${LOG_HOME}/${APP_NAME}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
@@ -27,9 +26,26 @@
                 <pattern>${LOG_PATTERN}</pattern>
             </encoder>
         </appender>
+        <appender name="ErrorLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+            <filter class="ch.qos.logback.classic.filter.LevelFilter">
+                <level>ERROR</level>
+                <onMatch>ACCEPT</onMatch>
+                <onMismatch>DENY</onMismatch>
+            </filter>
+            <File>${LOG_HOME}/${APP_NAME}-error.log</File>
+            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+                <FileNamePattern>${LOG_HOME}/${APP_NAME}-error.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+                <MaxHistory>30</MaxHistory>
+                <maxFileSize>500MB</maxFileSize>
+            </rollingPolicy>
+            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+                <pattern>${LOG_PATTERN}</pattern>
+            </encoder>
+        </appender>
         <root level="INFO">
             <appender-ref ref="CONSOLE"/>
             <appender-ref ref="SyncLogFile"/>
+            <appender-ref ref="ErrorLogFile"/>
         </root>
     </springProfile>
 
@@ -41,7 +57,7 @@
                 <charset>UTF-8</charset>
             </encoder>
         </appender>
-        <appender name="SyncLogFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <appender name="SyncLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
             <File>${LOG_HOME}/${APP_NAME}.log</File>
             <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                 <FileNamePattern>${LOG_HOME}/${APP_NAME}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
@@ -52,9 +68,26 @@
                 <pattern>${LOG_PATTERN}</pattern>
             </encoder>
         </appender>
+        <appender name="ErrorLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
+            <filter class="ch.qos.logback.classic.filter.LevelFilter">
+                <level>ERROR</level>
+                <onMatch>ACCEPT</onMatch>
+                <onMismatch>DENY</onMismatch>
+            </filter>
+            <File>${LOG_HOME}/${APP_NAME}-error.log</File>
+            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+                <FileNamePattern>${LOG_HOME}/${APP_NAME}-error.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+                <MaxHistory>30</MaxHistory>
+                <maxFileSize>500MB</maxFileSize>
+            </rollingPolicy>
+            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+                <pattern>${LOG_PATTERN}</pattern>
+            </encoder>
+        </appender>
         <root level="INFO">
             <appender-ref ref="CONSOLE"/>
             <appender-ref ref="SyncLogFile"/>
+            <appender-ref ref="ErrorLogFile"/>
         </root>
     </springProfile>
-</configuration>
+</configuration>