知了常识站
白蓝主题五 · 清爽阅读
首页  > 软件使用

日志记录按时间查询:快速定位问题的小技巧

平时用软件或者写程序,总免不了看日志。尤其是系统出问题的时候,翻日志就像查监控录像,得一帧一帧找线索。而最实用的筛选方式之一,就是按时间查日志。

为什么非得按时间查?

想象一下,服务器突然在晚上8点卡了一下,用户投诉页面打不开。这时候你去翻日志,总不能从头到尾一页页看吧?如果能直接查“8点前后的记录”,几秒就能锁定异常信息。比如看到一条 ERROR: database timeout 正好发生在19:59:42,问题范围立马缩小。

常见工具怎么查?

大多数日志系统都支持时间范围过滤。以Linux下常用的 journalctl 为例,想查今天下午2点到4点的服务日志,命令是:

journalctl --since "14:00" --until "16:00"

如果你用的是Nginx,访问日志默认按行记录,每条都有时间戳。可以用 grep 配合时间关键词快速提取:

grep "03/Apr/2025:14" /var/log/nginx/access.log

这行命令会找出2025年4月3日下午2点的所有访问记录,适合临时排查。

应用层日志也一样处理

自己写的Python脚本打的日志,只要加了时间格式,也能方便检索。比如日志长这样:

2025-04-03 14:23:15, INFO: User login success - uid=1023
2025-04-03 14:23:16, WARNING: Slow query detected

想查14:20到14:30之间的所有记录,直接用 awk 筛时间:

awk '$2 >= "14:20:00" && $2 <= "14:30:00"' app.log

这里$2是第二列,也就是时间部分,简单粗暴但很管用。

别忘了时区问题

有一次同事在国外部署服务,本地日志显示“10:00报错”,但他按北京时间去查,怎么都对不上。后来才发现,服务器用的是UTC时间,比国内慢8小时。所以查日志前先确认系统时区,避免白忙一场。

小技巧提升效率

如果经常要查某个时间段,可以写个简单的shell脚本封装常用命令。比如做个 log-today 脚本,自动算出今天的起止时间,一键输出关键服务的日志片段。再配合 lessvim 搜索功能,定位速度能快好几倍。

日志量一大,靠肉眼翻就不现实了。学会按时间切片,相当于给混乱的信息流装了个开关,想看哪段就哪段,省时又省心。