Преглед изворни кода

feat: 更新sys-log.log/request-logging.log日志配置支持双格式输出

lixuesong пре 1 недеља
родитељ
комит
2a859a022c

+ 29 - 1
yyc-common-log/src/main/resources/net/yyc/common/log/request-logging-file-appender.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <included>
+    <!-- 请求响应日志:默认文本格式落 request-logging.log;
+         JSON 单行冗余落 json/request-logging.log,供 SLS Logtail JSON 模式采集 -->
     <appender name="REQUEST_LOGGING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <!-- 正在记录的日志文件的路径及文件名 -->
         <file>${log.path}/request-logging.log</file>
@@ -15,14 +17,39 @@
         </rollingPolicy>
         <!-- 追加方式记录日志 -->
         <append>true</append>
-        <!-- 日志文件的格式:JSON 单行,供 SLS Logtail JSON 模式采集(与 sys-log/debug 等文件一致,透传 MDC traceId/spanId) -->
+        <!-- 日志文件格式:与 debug.log/error.log 一致的原文本格式 -->
+        <encoder>
+            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- request-logging 的 JSON 单行冗余(独立 json/ 目录),编码器与 debug-json/error-json 保持一致,
+         透传 MDC traceId/spanId -->
+    <appender name="REQUEST_LOGGING_FILE_JSON" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/json/request-logging.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/json/%d{yyyy-MM}/request-logging.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+            <!-- 保留7天的日志 -->
+            <maxHistory>7</maxHistory>
+            <maxFileSize>50MB</maxFileSize>
+        </rollingPolicy>
+        <append>true</append>
         <encoder class="net.logstash.logback.encoder.LogstashEncoder">
             <throwableConverter class="ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter"/>
+            <provider class="net.logstash.logback.composite.loggingevent.CallerDataJsonProvider"/>
             <provider class="net.yyc.common.log.logback.StackTraceFramesJsonProvider"/>
             <fieldNames>
                 <version>[ignore]</version>
                 <levelValue>[ignore]</levelValue>
             </fieldNames>
+            <customFields>{"log_file":"${log.path}/json/request-logging.log"}</customFields>
         </encoder>
         <!-- 此日志文件只记录info级别的 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
@@ -35,5 +62,6 @@
     <logger name="net.yyc.common.log.RequestLoggingFilter" level="INFO" additivity="false">
         <appender-ref ref="console" />
         <appender-ref ref="REQUEST_LOGGING_FILE" />
+        <appender-ref ref="REQUEST_LOGGING_FILE_JSON" />
     </logger>
 </included>

+ 28 - 2
yyc-common-log/src/main/resources/net/yyc/common/log/sys-log-file-appender.xml

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <included>
-    <!-- 操作日志(@SysLog / 登录事件):JSON 单行,独立落 sys-log.log,供 SLS Logtail 采集
+    <!-- 操作日志(@SysLog / 登录事件):默认文本格式落 sys-log.log;
+         JSON 单行冗余落 json/sys-log.log,供 SLS Logtail JSON 模式采集
          SysLogListener 在落库前先打 INFO,logger 限定 net.yyc.common.log.event -->
     <appender name="SYS_LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/sys-log.log</file>
@@ -12,14 +13,38 @@
             <maxFileSize>50MB</maxFileSize>
         </rollingPolicy>
         <append>true</append>
-        <!-- 日志文件格式:JSON 单行,供 SLS Logtail 采集(LogstashEncoder 默认 UTF-8,透传 MDC traceId/spanId) -->
+        <!-- 日志文件格式:与 debug.log/error.log 一致的原文本格式 -->
+        <encoder>
+            <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- sys-log 的 JSON 单行冗余(独立 json/ 目录),编码器与 debug-json/error-json 保持一致 -->
+    <appender name="SYS_LOG_FILE_JSON" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/json/sys-log.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/json/%d{yyyy-MM}/sys-log.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+            <!-- 保留7天的日志 -->
+            <maxHistory>7</maxHistory>
+            <maxFileSize>50MB</maxFileSize>
+        </rollingPolicy>
+        <append>true</append>
         <encoder class="net.logstash.logback.encoder.LogstashEncoder">
             <throwableConverter class="ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter"/>
+            <provider class="net.logstash.logback.composite.loggingevent.CallerDataJsonProvider"/>
             <provider class="net.yyc.common.log.logback.StackTraceFramesJsonProvider"/>
             <fieldNames>
                 <version>[ignore]</version>
                 <levelValue>[ignore]</levelValue>
             </fieldNames>
+            <customFields>{"log_file":"${log.path}/json/sys-log.log"}</customFields>
         </encoder>
         <!-- 此日志文件只记录info级别的 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
@@ -32,5 +57,6 @@
     <logger name="net.yyc.common.log.event" level="INFO" additivity="false">
         <appender-ref ref="console" />
         <appender-ref ref="SYS_LOG_FILE" />
+        <appender-ref ref="SYS_LOG_FILE_JSON" />
     </logger>
 </included>