tail

tail -f nohup.log
# 单个
tail -f test.log | grep "206"
# 多个字段
tail -f test.log | grep "206|Kafk"
# 在末尾追加|$,日志便可以输出所有,意思是匹配到的日志就高亮,匹配不到的则正常输出
tail -f test.log | grep -E "206|Kafk|$"
tail -f test.log | grep -E ".*206.*|Kafk|$"以条件内容206为例,在原来的基础上用.*包裹条件内容,那么输出的格式就是匹配到的条件整行都高亮展示

grep

参数 作用
-B N 匹配行之前的 N 行(Before)
-A N 匹配行之后的 N 行(After)
-C N 匹配行上下共 N 行(Context)
-i 忽略大小写
-H 显示匹配的文件名
-r 递归搜索目录下所有文件
# 查找ERROR日志,以及它的后10行
$ grep -A 10 ERROR app.log

# 查找ERROR日志,以及它的前10行
$ grep -B 10 ERROR app.log

# -C代表前10行和后10行
$ grep -C 10 ERROR app.log

# 查找 NullPointerException,并显示后面 50 行
grep -A 50 "java.lang.NullPointerException" a.log

# zgrep 是专门处理 .gz 的 grep,它的功能和 grep 完全一样,无需手动解压
zgrep -H -A 50 "java.lang.NullPointerException" *.gz

# 统计异常数量(快速判断异常是否频繁)
grep -c "java.lang.NullPointerException" *.log

# 实时监控 a.log 文件的新增内容,并只显示包含 "java.lang.NullPointerException" 的行及其后50行
tail -f a.log | grep -A 50 "java.lang.NullPointerException"