我有一個文件(application.log),其中的應用程序存儲其日誌。有時候我有一個異常,我想將只有這些異常存儲在另一個文件(exception.log)中。日誌中的每一行從在這種格式的時間開始:如何grep多行堆棧跟蹤?使用我的解決方案創建已禁用的線程
[2017-28-09 10:00:00,000] Text of log number 1
[2017-28-09 10:00:05,000] Text of log number 2
[2017-28-09 10:00:10,000] Text of Exception number 1
at bla bla bla
at bla bla bla
at bla bla bla
at bla bla bla
[2017-28-09 10:00:15,000] Text of log number 4
在這種siutation到exception.log應存儲:
[2017-28-09 10:00:10,000] Text of Exception number 1
at bla bla bla
at bla bla bla
at bla bla bla
at bla bla bla
我試圖與這樣的方法:
kill $(ps -ef | grep tail | awk '{print $2}')
tail -f /path/to/my/application.log | pcregrep -M 'Exception[^\[]+' | while read line
do
(echo "$line" >> /path/to/my/exception.log)
done &
這個解決方案成功地完成了這項工作,但它也在我的系統中創建了許多線程和總線程數量,並大幅增加。因此,我需要使用另一種解決方案或解決「不存在問題」。
你們是否有任何想法,我該如何削減,grep或複製只有異常堆棧跟蹤到另一個文件或防止不打開已停用的線程?
'tail -f /path/to/my/application.log | awk'/\[.*\]/{d=0;如果($ 0〜「Exception」)d = 1} d'>>/path/to/my/exception.log'爲你工作? – CWLiu
這完全是我要求的!謝謝:-) –
@CWLiu嗯......現在我注意到,它也趕上最後一行(我的意思是「[2017-28-09 10:00:15,000]日誌編號4的文本」)。我如何更改此代碼以僅使用Exception編寫行,而不使用next。 –