如何根据具体时间范围提取日志?假设问题在下午4点到下午5点之间开始,我怎样才能在这些时间之间获得特定的日志?我可以使用less
或cat
或grep
,但它不会向我提供错误的详细信息,示例命令:
grep "2013-08-26 16:00:00" sample.log
什么是更精确的Linux / Unix命令可以做到这一点?
答案 0 :(得分:2)
要查看 16:00:00 和 17:00:00 之间的错误日志消息,请使用:
grep -nP '2013-08-15 16:.+ERROR' sample.log | less
如果您在日志中有多行消息,则可以使用-A n
和-B n
参数为每个输出字符串添加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
答案 1 :(得分:1)
如果您知道问题发生在下午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