编辑 | blame | 历史 | 原始文档

生产环境日志优化说明

📋 优化内容总览

1. 日志级别优化

  • ✅ 生产环境全局日志级别从 INFO 调整为 WARN
  • ✅ 系统模块 com.ruoyiINFO 调整为 WARN
  • ✅ Spring 框架从 WARN 调整为 ERROR
  • ✅ 第三方组件(Druid、MyBatis、HTTP客户端)设为 ERROR

2. 日志文件管理优化

  • ✅ 单个日志文件最大 100MB(超过后自动切割)
  • ✅ INFO日志保留 30天(原60天)
  • ✅ ERROR日志保留 60天(保持不变)
  • ✅ 用户日志保留 30天(原60天)
  • ✅ 慢SQL日志保留 15天
  • ✅ 日志总大小限制:
  • INFO日志: 10GB
  • ERROR日志: 5GB
  • 用户日志: 5GB
  • 慢SQL日志: 2GB

3. 日志文件命名

优化后的日志文件命名格式:
sys-info.2025-12-06.0.log # 当天第1个文件 sys-info.2025-12-06.1.log # 当天第2个文件(前一个超过100MB) sys-error.2025-12-06.0.log sys-user.2025-12-06.0.log slow-sql.2025-12-06.0.log # 新增慢SQL日志

4. 环境隔离

  • 开发/测试环境 (dev, test)
  • 日志级别: INFO
  • 输出到控制台 + 文件
  • 包含SQL调试日志
  • 生产环境 (prod)

  • 日志级别: WARN
  • 仅输出到文件(不输出控制台,节省资源)
  • 慢SQL单独记录

5. 特定模块保留INFO日志

以下模块在生产环境仍保留INFO级别(便于问题排查):
- LegacySystemSyncServiceImpl - 旧系统同步服务
- VehicleGpsSegmentMileageServiceImpl - GPS里程计算服务


🔧 配置文件说明

logback.xml 核心配置

日志级别设置

<!-- 生产环境 -->
<springProfile name="prod">
    <!-- 全局WARN级别,减少90%的INFO日志 -->
    <logger name="com.ruoyi" level="warn" />
    <logger name="org.springframework" level="error" />
    
    <!-- 重要业务模块保留INFO -->
    <logger name="com.ruoyi.system.service.impl.LegacySystemSyncServiceImpl" level="info" />
</springProfile>

日志滚动策略

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <!-- 按天分割,按大小分割 -->
    <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <maxFileSize>100MB</maxFileSize>      <!-- 单文件最大100MB -->
    <maxHistory>30</maxHistory>           <!-- 保留30天 -->
    <totalSizeCap>10GB</totalSizeCap>     <!-- 总大小不超过10GB -->
</rollingPolicy>

📊 优化效果预估

日志量减少对比

环境 优化前 优化后 减少比例

| 日志级别 | INFO | WARN | - |
| 每日日志量 | ~2-5GB | ~200-500MB | 80-90% ↓ |
| 磁盘占用 | ~120GB (60天) | ~15GB (30天) | 87.5% ↓ |
| I/O压力 | 高 | 低 | 80% ↓ |

性能提升

  • ✅ 减少日志写入的 I/O 操作
  • ✅ 降低磁盘空间占用
  • ✅ 减少日志归档压力
  • ✅ 提高日志查询效率

📂 日志文件分类

1. sys-info.log

  • 内容: WARN级别的业务日志
  • 大小: 单文件100MB
  • 保留: 30天,总量10GB
  • 用途: 日常业务监控

2. sys-error.log

  • 内容: ERROR级别的错误日志
  • 大小: 单文件100MB
  • 保留: 60天,总量5GB
  • 用途: 错误排查、故障分析

3. sys-user.log

  • 内容: 用户操作审计日志
  • 大小: 单文件100MB
  • 保留: 30天,总量5GB
  • 用途: 用户行为审计

4. slow-sql.log ⭐ 新增

  • 内容: 慢SQL查询日志(>1000ms)
  • 大小: 单文件50MB
  • 保留: 15天,总量2GB
  • 用途: 数据库性能优化

🛠️ 日志管理工具

手动清理日志

# Windows
clean-logs.bat        # 清理30天前的日志
clean-logs.bat 15     # 清理15天前的日志

# Linux (如需要可创建)
./clean-logs.sh
./clean-logs.sh 15

查看日志统计

# 查看日志目录大小
cd logs
dir /s

# 查看慢SQL日志
type slow-sql.2025-12-06.0.log

# 统计ERROR数量
findstr /c:"ERROR" sys-error.2025-12-06.0.log

🎯 使用建议

1. 代码中的日志使用规范

✅ 推荐做法

// 生产环境建议使用WARN级别记录重要信息
log.warn("任务执行失败,任务ID: {}, 原因: {}", taskId, reason);

// ERROR级别记录异常
log.error("数据库连接失败", exception);

// INFO级别仅用于关键业务流程(会被记录)
log.info("调度单同步完成,任务ID: {}", taskId);

❌ 避免做法

// 避免在循环中使用INFO日志(生产环境已改为WARN,不会记录)
for (Task task : tasks) {
    log.info("处理任务: {}", task.getId());  // ❌ 不会记录
}

// 避免记录大量调试信息
log.info("完整数据: {}", JSON.toJSONString(largeObject));  // ❌ 不会记录

2. 性能监控关注点

慢SQL日志监控

# 每天检查慢SQL日志
type logs\slow-sql.2025-12-06.0.log

# 重点关注:
# - 执行时间超过1秒的SQL
# - 重复出现的慢SQL
# - 表扫描(全表扫描)

错误日志监控

# 每天检查错误日志
type logs\sys-error.2025-12-06.0.log

# 重点关注:
# - 数据库连接异常
# - 空指针异常
# - 业务逻辑错误

3. 日志分析

使用日志分析工具

推荐使用以下工具分析日志:
- Logstash + Elasticsearch + Kibana (ELK)
- Splunk
- Graylog
- 本地工具: Notepad++, VS Code

常用分析命令

# 统计错误次数
findstr /c:"ERROR" logs\sys-error.*.log | find /c "ERROR"

# 查找特定关键词
findstr /c:"slow sql" logs\sys-info.*.log

# 查看最近的错误
powershell "Get-Content logs\sys-error.log -Tail 50"

⚠️ 注意事项

1. 升级后首次运行

  • 旧日志文件不会自动删除,需手动清理
  • 新的日志文件名包含序号 .%i

2. 磁盘空间监控

  • 建议设置磁盘空间告警(低于10GB)
  • 定期检查日志目录大小

3. 日志级别调整

如果生产环境需要临时启用DEBUG日志排查问题:
xml <!-- 临时修改logback.xml --> <springProfile name="prod"> <!-- 临时启用DEBUG --> <logger name="com.ruoyi.system.service.impl.SysTaskServiceImpl" level="debug" /> </springProfile>

记得问题排查后改回 warn 级别!

4. 慢SQL阈值调整

application-prod.yml 中可以调整慢SQL阈值:
yaml druid: filter: stat: slow-sql-millis: 1000 # 调整为500ms或2000ms


🔄 回滚方案

如果优化后发现问题,可以快速回滚:

方案1: 修改日志级别

<!-- 在logback.xml中修改 -->
<springProfile name="prod">
    <logger name="com.ruoyi" level="info" />  <!-- 改回info -->
</springProfile>

方案2: 恢复原配置

保留了旧配置的备份,可以从Git恢复:
bash git checkout HEAD~1 -- ruoyi-admin/src/main/resources/logback.xml


📞 问题反馈

如发现以下情况,请及时调整配置:
- ❌ 重要日志没有记录(提升相关模块日志级别)
- ❌ 日志量仍然过大(降低日志级别或减少保留天数)
- ❌ 磁盘空间不足(减少 totalSizeCap 或 maxHistory)
- ✅ 需要更详细的调试信息(临时启用DEBUG级别)


📈 后续优化建议

  1. 引入日志聚合系统 (ELK Stack)
  2. 实时日志监控告警
  3. 按业务模块分离日志文件
  4. 日志采样(高流量接口)
  5. 异步日志写入(提升性能)

更新时间: 2025-12-06
优化版本: v2.0
维护人: 开发团队