2017-04-24 81 views
1

如何从当前日期的日志文件中选择所有ERROR和WARN和FATAL行?提前致谢。在日志文件中查找模式

我的日志文件如下所示。

[2017-04-24 17:26:48,385] WARN ******* GOODBYE /10.170.208.1:35084 ******** (org.apache.zookeeper.server.quorum.LearnerHandler) 
[2017-04-24 17:26:48,385] WARN Ignoring unexpected exception (org.apache.zookeeper.server.quorum.LearnerHandler) 
java.lang.InterruptedException 
     at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220) 
     at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335) 
     at java.util.concurrent.LinkedBlockingQueue.put(LinkedBlockingQueue.java:339) 
     at org.apache.zookeeper.server.quorum.LearnerHandler.shutdown(LearnerHandler.java:654) 
     at org.apache.zookeeper.server.quorum.LearnerHandler.run(LearnerHandler.java:647) 
[2017-04-24 17:26:48,385] INFO Reading snapshot /bnsf/kafka/zookeeper/version-2/snapshot.900000000 (org.apache.zookeeper.server.persistence.FileSnap) 
[2017-04-24 17:26:48,476] INFO Notification: 1 (message format version), 1 (n.leader), 0x243970000003b (n.zxid), 0x243aa (n.round), LOOKING (n.state), 1 (n.sid), 0x243a5 (n.peerEpoch) LOOKING (my state) (org.apache.zookeeper.server.quorum.FastLeaderElection) 
[2017-04-24 17:26:48,496] INFO Notification: 1 (message format version), 2 (n.leader), 0x243970000003b (n.zxid), 0x243aa (n.round), LOOKING (n.state), 2 (n.sid), 0x243a5 (n.peerEpoch) LOOKING (my state) (org.apache.zookeeper.server.quorum.FastLeaderElection) 
[ 
+0

使用grep。看到男人grep –

回答

1

使用grep

grep -E "^\[$(date +%Y-%m-%d).*(FATAL|ERROR|WARN)" logfile 

为了您的例子中,我们得到如下的输出:

[2017-04-24 17:26:48,385] WARN ******* GOODBYE /10.170.208.1:35084 ******** (org.apache.zookeeper.server.quorum.LearnerHandler) 
[2017-04-24 17:26:48,385] WARN Ignoring unexpected exception (org.apache.zookeeper.server.quorum.LearnerHandler) 

使用-A n的选择,如果你需要包含几行赛后覆盖多在线日志。

0

最好的选择可能是使用grep。您可以使用date +%F来获取当前日期,并将其用作正则表达式的一部分。例如:

grep "$(date +%F).*\(WARN\|ERROR\|FATAL\)" log_file.log 

这应该抓住所有从当天的线在包含log_file.log任一“WARN”,“错误”或“致命”。

0

首先,您希望使用文件格式的“今日日期”。

$ date +%Y-%m-%d 
2017-04-24 

您可以分配给变量:

$ today=$(date +%Y-%m-%d) 

然后因为ERROR,WARN,和FATAL出现在第三场,我会用AWK:

$ awk -v today="[$today" '$1 == today && $3 ~ /ERROR|WARN|FATAL/ {print}' 
相关问题