Logstash -- 在 log4net.log 中分隔可能包含多行的事件
Logstash -- delimit event in log4net.log which may contain multiple lines
这是从 log4net 生成的典型日志文件
因此,此日志文件由 logstash file input plugin 读取。
配置中的delimiter
默认为\n
,即每一行都是一个事件
但是在上面的日志文件中,您可以看到一个事件可能有多行。 (如 ERROR 或 FAULT 或其他)
如何配置Logstash来正确分隔事件?
我想我可以配置多个分隔符,例如 \nINFO
\nDEBUG
\nERROR
\nFAULT
。但是 document 表示只能有一个分隔符。
你有一个多行事件。有一个 codec 可以帮助您处理这个问题。
基本思想是定义一个模式来标识日志条目的开头(在您的情况下,日志级别),然后将所有其他行滚动到前一行。
以下配置应正确分隔您的事件。
输入配置:
input {
file {
path => "/absolute/path/here.log"
type => "log4net"
codec => multiline {
pattern => "^(DEBUG|WARN|ERROR|INFO|FATAL)"
negate => true
what => previous
}
}
}
这是从 log4net 生成的典型日志文件
因此,此日志文件由 logstash file input plugin 读取。
配置中的delimiter
默认为\n
,即每一行都是一个事件
但是在上面的日志文件中,您可以看到一个事件可能有多行。 (如 ERROR 或 FAULT 或其他)
如何配置Logstash来正确分隔事件?
我想我可以配置多个分隔符,例如 \nINFO
\nDEBUG
\nERROR
\nFAULT
。但是 document 表示只能有一个分隔符。
你有一个多行事件。有一个 codec 可以帮助您处理这个问题。
基本思想是定义一个模式来标识日志条目的开头(在您的情况下,日志级别),然后将所有其他行滚动到前一行。
以下配置应正确分隔您的事件。
输入配置:
input {
file {
path => "/absolute/path/here.log"
type => "log4net"
codec => multiline {
pattern => "^(DEBUG|WARN|ERROR|INFO|FATAL)"
negate => true
what => previous
}
}
}