logback-spring.xml 4.24 KB
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- 保留原有监听器(若无需可删除) -->
    <contextListener class="org.jeecg.utils.listener.CustomLogContextListener" />

    <!-- 核心:定义日志路径(兼容旧版,用默认值兜底) -->
    <property name="LOG_PATH" value="${LOG_PATH:-/mnt/data}" />
    <property name="LOG_HOME" value="${LOG_PATH}/logs" />
    <!-- 明确应用名称,避免为空 -->
    <springProperty name="appName" scope="context" source="spring.application.name" defaultValue="huaheng-wms-core" />

    <!-- 控制台输出(兼容旧版,移除高版本特性) -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{50}:%L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 控制台只输出 WARN+ 级别(避免刷屏) -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>

    <!-- 文件输出(核心:移除 <lazy>,用旧版支持的轮转策略) -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 轮转策略:SizeAndTimeBasedRollingPolicy 是旧版支持的双维度轮转 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/${appName}_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            <MaxHistory>30</MaxHistory> <!-- 保留30天 -->
            <maxFileSize>100MB</maxFileSize> <!-- 单个文件100MB -->
            <totalSizeCap>10GB</totalSizeCap> <!-- 总大小10GB -->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{50}:%L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 文件保留 INFO+ 级别 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <!-- 可选:DEBUG 日志单独输出(兼容旧版) -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/${appName}_debug_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            <MaxHistory>7</MaxHistory>
            <maxFileSize>50MB</maxFileSize>
            <totalSizeCap>500MB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{50}:%L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>

    <!-- JDBC 日志配置(保留原有,优化 additivity) -->
    <logger name="jdbc.connection" additivity="false" level="OFF">
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.resultsettable" additivity="false" level="INFO">
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.resultset" additivity="false" level="OFF">
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.audit" additivity="false" level="OFF">
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.sqlonly" additivity="false" level="OFF">
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.sqltiming" additivity="false" level="INFO">
        <appender-ref ref="FILE" />
    </logger>

    <!-- 根日志器(兼容旧版写法) -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <!-- WMS 模块 DEBUG 日志单独输出(按需启用) -->
    <logger name="org.jeecg.modules.wms" level="DEBUG" additivity="false">
        <appender-ref ref="DEBUG_FILE" />
    </logger>
</configuration>