1

我需要使用 logstash 生成新字段(loglevel),最后在 kibana 中显示。

Log4jNet 日志文件的日志文件格式

  1. 如何提取此日志并为此日志使用 grok 过滤器制作模式。
  2. 如何使用 logstash 配置创建loglevel字段。
4

2 回答 2

0

当我设置我的 log4net 过滤器时,我发现这个页面很有帮助。根据您的日志的样子,您最终会得到类似这样的内容(从该页面复制):

filter {
  if [type] == "log4net" {
    grok {
      match => [ "message", "(?m)%{LOGLEVEL:level} %{TIMESTAMP_ISO8601:sourceTimestamp} %{DATA:logger} \[%{NUMBER:threadId}\]  \[%{IPORHOST:tempHost}\] %{GREEDYDATA:tempMessage}" ]
    }
    mutate {
        replace => [ "message" , "%{tempMessage}" ]
        replace => [ "host" , "%{tempHost}" ]
        remove_field => [ "tempMessage" ]
        remove_field => [ "tempHost" ]
    }
  }
}
于 2015-07-09T22:13:59.633 回答
0

是的,现在我得到了答案。请找到以下用于创建新字段并过滤某些字段的配置。

filter {
    multiline{
            pattern => "^%{TIMESTAMP_ISO8601}"
            what => "previous"
            negate=> true
        } 
    # Delete trailing whitespaces
      mutate {
        strip => "message"
      }    
    # Delete \n from messages
    mutate {
        gsub => ['message', "\n", " "]
    }  
    # Delete \r from messages
    mutate {
        gsub => ['message', "\r", " "]
    }

    grok { 
      match => { "message" => "%{TIMESTAMP_ISO8601:time} \[%{NUMBER:thread}\] %{LOGLEVEL:loglevel} %{JAVACLASS:class} - %{GREEDYDATA:msg}" } 
        }   
    if "Exception" in [msg] {
     mutate {
      add_field => { "msg_error" => "%{msg}" }
      }
    }
  }
于 2015-07-14T07:26:29.547 回答