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
                }
      }
}