日志分析基础:日志级别、日志格式、常用日志分析工具
日志这东西,说白了就是系统的「黑匣子」。
我刚开始做运维那会儿,遇到线上故障就慌。后来发现,90%的问题都藏在日志里。你只要会看日志,问题就解决了一半。
这一节,咱们聊聊日志分析的基础。别小看它,这是定位问题的基本功。
一、日志级别:从「DEBUG」到「FATAL」
日志级别,就是给日志贴个标签。告诉你看日志的人——这条消息有多严重。
常见的日志级别,从低到高是这样的:
| 级别 | 含义 | 什么时候用 |
|---|---|---|
| TRACE | 跟踪 | 最细粒度的信息,一般开发调试用 |
| DEBUG | 调试 | 开发阶段打印变量、流程信息 |
| INFO | 信息 | 正常运行的关键节点,比如服务启动、请求完成 |
| WARN | 警告 | 可能有问题,但不影响当前运行 |
| ERROR | 错误 | 发生了异常,但系统还能继续跑 |
| FATAL | 致命 | 系统扛不住了,即将崩溃 |
为什么要区分级别?
你想想看,线上出故障了,你肯定先看 ERROR 和 FATAL。如果一上来就看 DEBUG,那信息量太大了,根本找不到重点。
二、日志格式:别让日志变成「天书」
日志格式,就是日志的「长相」。好的日志格式,一眼就能看出关键信息。
我个人比较推荐的标准格式:
[时间] [线程] [级别] [类名] - [消息内容]
举个例子:
[2024-03-15 14:30:22.123] [http-nio-8080-exec-1] [ERROR] [com.example.OrderService] - 订单创建失败,订单号:ORD20240315001,原因:库存不足
这条日志里,你能看到什么?
- 时间:14:30:22.123,精确到毫秒
- 线程:http-nio-8080-exec-1,知道是哪个请求线程
- 级别:ERROR,说明是错误
- 类名:OrderService,知道是哪个模块出的问题
- 消息:订单创建失败,原因都写清楚了
三、常用日志分析工具:grep、awk、sed
日志文件动辄几百MB,甚至几个GB。你不可能用编辑器打开慢慢看。这时候,Linux 三剑客就派上用场了。
1. grep:最快的「搜索器」
grep 就是用来找关键字的。它的核心用法就一个:从日志里找出包含某个关键词的行。
常用场景:
# 查找所有 ERROR 日志
grep "ERROR" app.log
# 查找包含 "订单创建失败" 的日志
grep "订单创建失败" app.log
# 忽略大小写查找
grep -i "error" app.log
# 显示匹配行的前后5行(上下文)
grep -C 5 "NullPointerException" app.log
# 递归查找目录下所有日志
grep -r "超时" /var/log/app/
我排查问题时,第一步永远是 grep。先找到异常的关键词,缩小范围。
2. awk:强大的「格式化器」
awk 擅长处理「有规律」的文本。比如日志格式固定,你想提取某一列。
常用场景:
# 假设日志格式:时间 级别 消息
# 提取所有 ERROR 级别的时间
awk '/ERROR/ {print $1}' app.log
# 统计每个级别的日志数量
awk '{count[$2]++} END {for (level in count) print level, count[level]}' app.log
# 按分隔符切割(比如用逗号分隔)
awk -F',' '{print $1, $3}' data.log
3. sed:灵活的「编辑器」
sed 用来做文本替换和删除。它不会直接修改原文件,除非你加 -i 参数。
常用场景:
# 替换日志中的 IP 地址(脱敏)
sed 's/192\.168\.1\.\d+/***.***.***.***/g' app.log
# 删除所有 DEBUG 级别的日志
sed '/DEBUG/d' app.log
# 只保留第 100 到 200 行
sed -n '100,200p' app.log
四、三剑客组合拳:实战演练
单独用 grep、awk、sed 已经很厉害了。但把它们组合起来,才是真正的「大杀器」。
举个例子:
需求:从 app.log 中找出所有 ERROR 级别的日志,提取出时间、类名和错误消息,然后按时间排序。
grep "ERROR" app.log | awk '{print $1, $4, $NF}' | sort
这条命令干了三件事:
- grep 先过滤出 ERROR 行
- awk 提取第1列(时间)、第4列(类名)、最后一列(错误消息)
- sort 按时间排序
你看,一行命令就把问题定位清楚了。
五、知识体系图
下面这张图,帮你理清日志分析的核心逻辑:
嗯,这张图把日志分析的三个核心要素串起来了。你记住这个思路,以后遇到问题就不会慌了。
日志分析,说白了就是「找不同」。找到异常的那条日志,你就成功了一半。剩下的,就是顺着线索往下挖。
可可精品资料库