繁体   English   中英

如何根据错误关键字从日志文件中提取行?

[英]How to extract lines from log files based on an error keyword?

这是一个示例日志文件(如下)。 当日志中的任何行中存在关键字 ORA-02063 时,我想提取日志文件中具有相同时间戳的所有行。

我曾尝试使用 grep,但这不起作用,因为我无法提取时间戳。

20200814 13:54:34 DEBUG (com.test.test.test.test2Servlet) [doPost]  Incoming XML request: <?xml version="1.0" encoding="UTF-8"?>
<webdoc>
</contract>
<notes>


some data

</notes>
    </contract>
</webdoc> 
20200814 13:54:34 ERROR (com.test.test.test.test2Servlet) [doPost] request failed: ccom.test.test.test.test2Servlet.exception.SystemFailureException: Database operation failed  - caused by: java.sql.BatchUpdateException: ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-02063: preceding stringstring from string```



你可以试试这个,不是最好的,而是一个解决方案

grep "`grep 'ORA-02063' logfile -B1 | cut -d ' ' -f1,2 | head -n 1`" logfile

用文件 webdoc 中的示例数据试试这个:

dayte=$(awk -v str="ORA-01461" '{ if (match($0,str)) { print substr($0,0,17) } }' webdoc)

使用 awk,传递您要搜索的字符串,如果该字符串存在于该行中,则使用 substr 函数获取日期和时间戳并打印。 将结果读入变量 dayte。

设置变量 dayte 后,使用 sed 打印所需的行:

sed -n '/'"$dayte"'/,/^<\/webdoc>/p' webdoc

将包含相关日期的所有行打印到结束 webdoc 标签。

注 - 确保在 sed 命令中引用了 dayte 变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM