开发环境:
java -Dlogging.config=classpath:log4j2-dev.xml -jar your-app.jar
生产环境:
java -Dlogging.config=classpath:log4j2.xml -jar your-app.jar
在 VM options 中添加:
-Dlogging.config=classpath:log4j2-dev.xml
在 application.properties 中添加:
logging.config=classpath:log4j2-dev.xml
logs/
├── dc-api.log # 主日志文件(INFO及以上)
├── dc-api-error.log # 错误日志(仅ERROR)
├── dc-api-sql.log # SQL日志(仅开发环境)
└── 2026-05/ # 按月份归档
├── dc-api-2026-05-23-1.log.gz
├── dc-api-error-2026-05-23-1.log.gz
└── dc-api-sql-2026-05-23-1.log.gz
| 级别 | 使用场景 | 示例 |
|---|---|---|
| ERROR | 系统错误、异常 | 数据库连接失败、空指针异常 |
| WARN | 警告信息 | 配置项缺失、降级处理 |
| INFO | 重要业务流程 | 用户登录、订单创建 |
| DEBUG | 调试信息 | 方法参数、中间结果 |
| TRACE | 详细跟踪 | 循环中的每一步 |
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class YourService {
private static final Logger log = LoggerFactory.getLogger(YourService.class);
public void process() {
log.info("开始处理业务");
log.debug("参数值: {}", param);
try {
// 业务逻辑
} catch (Exception e) {
log.error("处理失败", e); // 自动包含完整堆栈
}
}
}
# Linux/Mac
tail -f logs/dc-api-error.log
# Windows PowerShell
Get-Content logs/dc-api-error.log -Wait -Tail 50
tail -f logs/dc-api-sql.log
# 查找今天的错误
grep "2026-05-23" logs/dc-api-error.log
# 查找特定类的错误
grep "YourClassName" logs/dc-api-error.log
# 统计今天的错误数
grep -c "2026-05-23" logs/dc-api-error.log
使用占位符而不是字符串拼接:
// ✅ 推荐
log.debug("User: {}, Age: {}", name, age);
// ❌ 不推荐
log.debug("User: " + name + ", Age: " + age);
大对象日志要谨慎:避免日志文件过大
定期清理旧日志:已配置自动清理,但也要监控磁盘空间
A: 确保使用了 log4j2-dev.xml 配置,并且DAO包的日志级别是DEBUG。
A:
A:
A: 在log4j2.xml中添加:
<Logger name="com.your.package" level="debug" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="InfoFile"/>
</Logger>
建议配置日志监控:
可以使用工具: