wlzboy
9 小时以前 5f2ee03958a1a16dc27195c76ea7cffb422c95d1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路径 -->
    <property name="log.path" value="./logs" />
    <!-- 日志输出格式 -->
    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    <!-- 单个日志文件最大大小 -->
    <property name="log.maxFileSize" value="100MB" />
    <!-- 日志文件总大小上限 -->
    <property name="log.totalSizeCap" value="10GB" />
 
    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    
    <!-- 系统日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-info.log</file>
        <!-- 循环政策:基于时间和大小创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 单个日志文件最大大小 -->
            <maxFileSize>${log.maxFileSize}</maxFileSize>
            <!-- 日志最大的历史 30天(生产环境减少保留时间) -->
            <maxHistory>30</maxHistory>
            <!-- 日志文件总大小上限 -->
            <totalSizeCap>${log.totalSizeCap}</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-error.log</file>
        <!-- 循环政策:基于时间和大小创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 单个日志文件最大大小 -->
            <maxFileSize>${log.maxFileSize}</maxFileSize>
            <!-- 日志最大的历史 60天(错误日志保留更长时间) -->
            <maxHistory>60</maxHistory>
            <!-- 日志文件总大小上限 -->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    
    <!-- 用户访问日志输出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 单个日志文件最大大小 -->
            <maxFileSize>${log.maxFileSize}</maxFileSize>
            <!-- 日志最大的历史 30天 -->
            <maxHistory>30</maxHistory>
            <!-- 日志文件总大小上限 -->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    
    <!-- 慢SQL日志单独输出(便于性能监控和优化) -->
    <appender name="slow-sql" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/slow-sql.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/slow-sql.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>50MB</maxFileSize>
            <maxHistory>15</maxHistory>
            <totalSizeCap>2GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    
    <!-- 开发环境配置 -->
    <springProfile name="dev,test">
        <!-- 系统模块日志级别控制  -->
        <logger name="com.ruoyi" level="info" />
        <!-- Spring日志级别控制  -->
        <logger name="org.springframework" level="warn" />
        <!-- MyBatis SQL日志 -->
        <logger name="com.ruoyi.system.mapper" level="debug" />
 
        <root level="info">
            <appender-ref ref="console" />
            <appender-ref ref="file_info" />
            <appender-ref ref="file_error" />
        </root>
    </springProfile>
    
    <!-- 生产环境配置 -->
    <springProfile name="prod">
        <!-- 系统模块日志级别控制(生产环境调整为WARN,减少INFO日志) -->
        <logger name="com.ruoyi" level="warn" />
        <!-- Spring日志级别控制  -->
        <logger name="org.springframework" level="error" />
        <!-- Druid数据源日志控制 -->
        <logger name="com.alibaba.druid" level="error" />
        <!-- MyBatis日志控制 -->
        <logger name="org.mybatis" level="error" />
        <logger name="org.apache.ibatis" level="error" />
        <!-- HTTP客户端日志控制 -->
        <logger name="org.apache.http" level="error" />
        
        <!-- 特定业务模块保留INFO级别(根据需要调整) -->
        <logger name="com.ruoyi.system.service.impl.LegacySystemSyncServiceImpl" level="info" />
        <logger name="com.ruoyi.system.service.impl.VehicleGpsSegmentMileageServiceImpl" level="info" />
        
        <!-- 慢SQL日志(Druid监控) -->
        <logger name="druid.sql.Statement" level="warn" additivity="false">
            <appender-ref ref="slow-sql" />
        </logger>
        
        <root level="warn">
            <!-- 生产环境不输出到控制台,减少资源消耗 -->
            <!-- <appender-ref ref="console" /> -->
            <appender-ref ref="file_info" />
            <appender-ref ref="file_error" />
        </root>
    </springProfile>
    
    <!--系统用户操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration>