程序员如何做「日志分析」:不是记流水账,是找线索
日志是系统运行的记录,也是排查问题的第一手资料。
好的日志能让你 5 分钟定位问题,不好的日志让你花 5 小时还在猜。
一、日志的级别
1. DEBUG
调试信息,开发时用,生产环境通常关闭。
2. INFO
正常流程记录,系统运行状态。
3. WARN
警告,系统能运行但需要注意。
4. ERROR
错误,需要排查和修复。
5. FATAL
致命错误,系统可能无法继续运行。
二、好日志的标准
1. 关键节点有记录
- 请求入口和出口
- 数据库操作
- 外部服务调用
- 关键业务操作
2. 上下文完整
- 请求 ID(关联所有日志)
- 用户 ID(定位问题)
- 关键参数(复现问题)
- 时间戳
3. 错误信息详细
log.error("用户登录失败", e);
// 输出:异常类型 + 堆栈 + 原因
4. 可搜索
- 结构化日志(JSON)方便搜索
- 统一的日志格式
三、日志分析的技巧
1. 按请求 ID 搜索
一个请求的所有日志都串起来。
2. 按时间范围过滤
缩小范围,快速定位。
3. 关键词搜索
ERROR、WARN、Exception。
4. 关联分析
前端日志 + 后端日志 + 数据库慢查询。
四、常用日志分析工具
1. ELK(Elasticsearch + Logstash + Kibana)
- 日志收集、存储、搜索、可视化
- 最流行的日志方案
2. Loki
- Grafana 原生
- 轻量级,适合 Kubernetes
3. Sentry
- 专注异常追踪
- 支持多语言
4. grep/awk/sed
- 命令行快速分析
- 临时排查首选
五、常见日志问题
1. 日志太多
- 每个函数都打日志
- 噪音太大,难以找到关键信息
2. 日志太少
- 只有 ERROR,没有上下文
- 不知道问题是怎么发生的
3. 日志不一致
- 格式不统一
- 难以关联分析
4. 敏感信息泄露
- 密码、Token 明文记录
- 用户隐私信息没有脱敏
六、一句话总结
日志分析 = 关键节点记录 + 完整上下文 + 错误详情 + 结构化格式,工具(ELK/Loki/Sentry),核心是用日志快速定位问题。