几种常用的日志查询操作:

  • 文件较小

    vim xxx.log

    直接检索即可

  • 文件较大
    我们就需要不打开文件,定位到其中的某个关键日志

    grep "ERROR" xxx.log 

    如果需要显示 关键日志 的上下文,如果知道大概行数可以使用,以下3种方法:

    • -A NUM,--after-context=NUM 显示匹配项之后多少行
    • -B NUM,--before-context=NUM 显示匹配项之前多少行
    • -C NUM,--context=NUM 显示匹配项上下文多少行

      # 例如
      grep -C 10 "ERROR" xxx.log

如果不知道上下文行树,需要定位到之后,跟踪检查后续日志,可以如下操作

# 先使用-n 参数显示行号
grep -n "ERROR" xxx.log

# 使用more 命令显示跳转到定位行, 比如第891行
more +891

# 之后可以enter换行,空格换页,或者 `/`来检索之后的日志,`n`下一个

小技巧:

  1. 压缩包
    一般来说,数据库都会使用压缩包来减少日志磁盘占用。
    可以使用 zcatzgrepzmore 等来替代
  2. 多个日志
    多个文件 可以使用 通配符来 处理文件名,例如:

    grep "ERROR" job.log.2021-05-18.*.gz
  3. 日志名排序
    有时候多个日志的时候,xxx.21.gz的日志会在xxx.2.gz前面。而我们更希望他们按照数字大小排序

    ls -v job.log.2021-05-18.*.gz|xargs zgrep "ERROR"

天纵
43 声望2 粉丝

全栈工程师