Ver Fonte

# config:日志配置

yang yi há 1 semana atrás
pai
commit
0c50df3813
1 ficheiros alterados com 168 adições e 0 exclusões
  1. 168 0
      src/main/resources/logback.xml

+ 168 - 0
src/main/resources/logback.xml

@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+
+    <!--
+        配置说明:
+        - scan="true": 配置文件发生变化时自动重新加载
+        - scanPeriod: 扫描间隔时间
+        - debug: 是否打印 logback 内部日志
+    -->
+
+    <!-- ========== 1. 定义变量,方便统一管理 ========== -->
+    <!-- 日志存放路径 -->
+    <property name="LOG_HOME" value="logs" />
+    <!-- 日志文件最大保留天数 -->
+    <property name="MAX_HISTORY" value="30" />
+    <!-- 单个日志文件最大大小 -->
+    <property name="MAX_FILE_SIZE" value="100MB" />
+    <!-- 日志总大小限制(可选) -->
+    <property name="TOTAL_SIZE_CAP" value="10GB" />
+
+    <!-- ========== 2. 控制台输出配置 ========== -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!-- 日志输出格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--
+                格式说明:
+                %d{yyyy-MM-dd HH:mm:ss.SSS} 日期时间
+                %-5level 日志级别(左对齐,5个字符宽度)
+                %thread 线程名称
+                %logger{50} 日志记录器名称(最多50个字符)
+                %msg 日志消息
+                %n 换行
+            -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志级别阈值:只输出 INFO 及以上级别的日志到控制台 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>DEBUG</level>
+        </filter>
+    </appender>
+
+    <!-- ========== 3. 文件输出配置 ========== -->
+    <!-- 3.1 普通日志文件(INFO 级别) -->
+    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件 -->
+        <file>${LOG_HOME}/ssm-info.log</file>
+
+        <!-- 日志输出格式 -->
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+
+        <!-- 滚动策略:基于时间和文件大小 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!-- 按天滚动,文件命名格式 -->
+            <fileNamePattern>${LOG_HOME}/archive/ssm-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 每个日志文件最大大小 -->
+            <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
+            <!-- 日志保留天数 -->
+            <maxHistory>${MAX_HISTORY}</maxHistory>
+            <!-- 日志总大小上限 -->
+            <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
+        </rollingPolicy>
+
+        <!-- 过滤器:只输出 INFO 级别的日志 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 3.2 错误日志文件(ERROR 级别,单独记录) -->
+    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/ssm-error.log</file>
+
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/archive/ssm-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
+            <maxHistory>${MAX_HISTORY}</maxHistory>
+            <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap>
+        </rollingPolicy>
+
+        <!-- 过滤器:只输出 ERROR 级别的日志 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 3.3 调试日志文件(DEBUG 级别,用于开发环境) -->
+    <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/ssm-debug.log</file>
+
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!-- DEBUG 模式输出更详细的信息:包括行号、方法名 -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - [%method:%line] - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/archive/ssm-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
+            <maxHistory>7</maxHistory>  <!-- DEBUG 日志只保留7天 -->
+        </rollingPolicy>
+
+        <!-- 过滤器:只输出 DEBUG 级别的日志 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- ========== 4. 异步日志配置(提升性能) ========== -->
+    <appender name="ASYNC_INFO" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- 不丢失日志,默认如果队列满80%会丢弃日志,设为从不丢弃 -->
+        <discardingThreshold>0</discardingThreshold>
+        <!-- 队列大小 -->
+        <queueSize>1024</queueSize>
+        <!-- 引用前面的 INFO 文件 appender -->
+        <appender-ref ref="FILE_INFO" />
+    </appender>
+
+    <appender name="ASYNC_ERROR" class="ch.qos.logback.classic.AsyncAppender">
+        <discardingThreshold>0</discardingThreshold>
+        <queueSize>1024</queueSize>
+        <appender-ref ref="FILE_ERROR" />
+    </appender>
+
+    <!-- ========== 5. 日志级别配置 ========== -->
+    <!--
+        root 是根日志记录器,所有未指定包的日志都使用这个级别
+        日志级别优先级:TRACE < DEBUG < INFO < WARN < ERROR
+    -->
+    <root level="INFO">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="ASYNC_INFO" />
+        <appender-ref ref="ASYNC_ERROR" />
+    </root>
+
+    <!-- 开发环境可以降低 MyBatis 日志级别,查看 SQL 执行情况 -->
+    <logger name="com.yourpackage.mapper" level="DEBUG" additivity="false">
+        <appender-ref ref="CONSOLE" />
+        <appender-ref ref="FILE_DEBUG" />
+    </logger>
+
+    <!-- 打印 Spring 框架的 WARN 及以上级别日志,减少控制台干扰 -->
+    <logger name="org.springframework" level="WARN" />
+
+    <!-- 打印 MyBatis 的 SQL 参数绑定 -->
+    <logger name="org.apache.ibatis" level="DEBUG" />
+
+    <!-- 打印连接池日志 -->
+    <logger name="com.alibaba.druid" level="WARN" />
+
+    <!-- 打印 Thymeleaf 引擎日志(生产环境可设为 ERROR) -->
+    <logger name="org.thymeleaf" level="INFO" />
+
+</configuration>