我有一个文件(application.log),我的应用程序在其中存储它们的日志。有时我有一个异常,我只想将这些异常存储在另一个文件(exception.log)中。每行日志都从日期开始,格式如下:
[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
在这种情况下,应存储 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 或复制到另一个文件或防止不打开失效的线程吗?