如何在日志中选择多行

时间:2015-08-05 10:16:57

标签: awk extract

我尝试制作文件。它在特定的日志文件中包含所有错误消息。

这是日志内容。

[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -
org.springframework.jdbc.BadSqlGrammarException:
.....
..e(SQLErrorCodeSQLExceptionTranslator.java:231)
..ractFallbackSQLExceptionTranslator.java:73)
..Possible(MyBatisExceptionTranslator.java:73)
..Interceptor.invoke(SqlSessionTemplate.java:371)
..electOne(Unknown Source)
..emplate.selectOne(SqlSessionTemplate.java:163)
[INFO] 2015-08-05 14:20:39 LoggingInterceptor -  /products/430

我尝试了

awk '$1 ~/^\[ERROR\]$/{print$0}' original.log > extract.log

但结果只有一行。

[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -

我的预期是......

[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -
org.springframework.jdbc.BadSqlGrammarException:
.....
..e(SQLErrorCodeSQLExceptionTranslator.java:231)
..ractFallbackSQLExceptionTranslator.java:73)
..Possible(MyBatisExceptionTranslator.java:73)
..Interceptor.invoke(SqlSessionTemplate.java:371)
..electOne(Unknown Source)
..emplate.selectOne(SqlSessionTemplate.java:163)

我想知道如何提取所有错误消息。

1 个答案:

答案 0 :(得分:1)

根据您要打印的级别,一个想法是打开和关闭打印:

$ cat log.awk
/^\[[A-Z]+\]/ { flag = 0 }
/^\[ERROR\]/ { flag = 1 }
flag

$ cat log.txt
[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -enter code here
org.springframework.jdbc.BadSqlGrammarException:enter code here
.....enter code here
..e(SQLErrorCodeSQLExceptionTranslator.java:231)enter code here
..ractFallbackSQLExceptionTranslator.java:73)enter code here
..Possible(MyBatisExceptionTranslator.java:73)enter code here
..Interceptor.invoke(SqlSessionTemplate.java:371)enter code
..electOne(Unknown Source)enter code here
..emplate.selectOne(SqlSessionTemplate.java:163)enter code here
[INFO] 2015-08-05 14:20:39 LoggingInterceptor - /products/430
[ERROR] some other
multiline
error
[WARN] A warning not an error

$ awk -f log.awk log.txt
[ERROR] 2015-08-05 14:20:10 HandlerExceptionResolver -enter code here
org.springframework.jdbc.BadSqlGrammarException:enter code here
.....enter code here
..e(SQLErrorCodeSQLExceptionTranslator.java:231)enter code here
..ractFallbackSQLExceptionTranslator.java:73)enter code here
..Possible(MyBatisExceptionTranslator.java:73)enter code here
..Interceptor.invoke(SqlSessionTemplate.java:371)enter code
..electOne(Unknown Source)enter code here
..emplate.selectOne(SqlSessionTemplate.java:163)enter code here
[ERROR] some other
multiline
error