做后端运维或前端联调时,常会拿到一串客户端请求处理日志,比如 Nginx 的 access.log、Spring Boot 的自定义日志,或者前端埋点上报的原始文本。这些日志通常以空格、竖线或 JSON 行形式存在,一行代表一次请求,字段杂乱,直接看费眼又难定位问题。
别急着写脚本,先试试 Excel
很多人忽略了一点:Excel 其实是处理这类半结构化日志的“轻量利器”。只要日志每行字段分隔明确(比如用空格、制表符或逗号),就能用「数据 → 从文本/CSV」导入,再配合「分列」功能秒变表格。
举个真实例子:你收到一段 Nginx 日志片段:
192.168.1.22 - - [15/Jul/2024:09:23:41 +0800] "GET /api/user/profile HTTP/1.1" 200 1248 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"复制进 Excel 后,选中整列 → 「数据」选项卡 → 「分列」→ 选择「分隔符号」→ 勾选「空格」→ 取消勾选「连续分隔符视为一个」→ 下一步,把不需要的列(比如中间一堆短横和中括号)设为「不导入此列」→ 完成。几秒钟,IP、时间、方法、路径、状态码、响应大小就各占一列了。
用筛选和条件格式盯住异常请求
状态码列标出 4xx/5xx 很简单:选中该列 → 「开始」→ 「条件格式」→ 「突出显示单元格规则」→ 「大于」→ 输入 499,选红色填充。再加一列公式判断耗时是否超阈值,比如日志里第7字段是响应时间(单位毫秒):
=IF(G2>800,"慢","正常")下拉填充,再按这列筛选,就能快速捞出拖慢体验的请求。JSON 格式日志?也能搞定
现在很多服务输出的是每行一个 JSON 对象,例如:
{"ip":"10.0.3.15","method":"POST","path":"/login","status":200,"latency_ms":324}复制进 Excel 后,用「分列」→ 「其他」→ 输入 { 或 "ip": 当分隔符太麻烦。更稳的办法:在记事本里批量替换 {" 为 \n",再用 Excel 导入 CSV,或直接用 Power Query(Excel 2016+ 内置)→ 「数据」→ 「从文本/CSV」→ 导入后点「转换数据」→ 「高级编辑器」粘贴 M 代码解析 JSON 字段——但大多数日常场景,用「查找替换 + 分列」已够用。日志不是非得丢给 ELK 或 Python 才算专业。手边有 Excel,打开、粘贴、分列、筛选、标色——三分钟看清谁在疯狂刷接口、哪个路径返回最多 504、哪台客户端延迟突增。这才是数码工坊里最实在的技巧。