我正在寻找一种方法来仅查看具有这种行格式的 WebLogic 日志文件的最后 10 分钟。
####<Sep 21, 2018 1:56:20 PM EDT> <Notice> <Stdout>
我想 grep 一个特定的字符串,如果失败,则等待 60 秒并重试。这适用于 RHEL 7,我可以使用 sed、awk 等。
答案1
由于您使用的是 RHEL 7,WebLogic
因此现在可能正在使用 systemd。这意味着您可以利用journalctl
该--since
选项。
来自这篇文章https://www.qualogy.com/techblog/oracle/introducing-weblogic-to-systemd#看起来你会使用其中一个wls_nodemanager
或wls_adminserver
两个。要查看两者,请使用:
journalctl -u wls_nodemanager -u wls_adminserver --since "10min ago"
答案2
如果您放宽最后 10 分钟的要求,并使用 GNU coreutils 和 grep,这很容易:
tail -f -s 60 -n +0 file.txt | grep -m 1 pattern
从零行 () 开始跟踪整个文件-n +0
,每秒轮询一次-s
,-m
匹配后 grep 停止。
对于一次性的交互式搜索,我不会费心进行日期解析,并且首先会手动更改起始行 tail -n
。日期解析可以通过使用您最喜欢的脚本语言编写脚本并使用合适的模块(Python,Perl)来实现。
最后,如果您想要一个日志搜索引擎,请考虑实施事件管理系统,如Graylog、ELK、Splunk、Log Insight、LogRhythm 等。