如何根据特定时间范围提取日志?假设问题在下午 4 点到 5 点之间开始,我如何才能在这些时间之间获取特定的日志?我可以使用less
or cat
orgrep
但它不会给我错误的详细信息,示例命令:
grep "2013-08-26 16:00:00" sample.log
可以做到这一点的更精确的 Linux/Unix 命令是什么?
要查看 16:00:00到17:00:00之间的错误日志消息,请使用:
grep -nP '2013-08-15 16:.+ERROR' sample.log | less
如果您在日志中有多行消息,您可以使用-A n
和-B n
params 为每个输出字符串添加 n 行之后或之前:
每行前后各3行:
grep -A 3 -B 3 -nP '2013-08-15 16:.+ERROR' sample.log | less
相同的简写:
grep -3 -nP '2013-08-15 16:.+ERROR' sample.log | less
如果您知道该问题发生在下午 4 点到 5 点之间,您可以使用以下命令:
grep "2013-08-26 16:" sample.log | less
如果您需要围绕该问题的一些行,请将选项 -N 添加到 grep(N 行的上下文),如下所示:
grep -3 "2013-08-26 16:" sample.log | less
如果您知道您的事件包含某个特定的单词,您可以使用另外一个 grep 对其进行更多过滤:
grep -3 "2013-08-26 16:" sample.log | grep somethingelse