2017-04-24 109 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}' 
相關問題