Chr*_*s F 7 log4j logstash logstash-grok
我被要求将我们的log4j日志文件(暂时不使用Socket调用)整合到Logstash JSON文件中,然后我将其提供给Elasticsearch.我们的代码使用RollingFileAppender.这是一个示例日志条目.
2016-04-22 16:43:25,172 ERROR :SomeUser : 2 [com.mycompany.SomeClass] AttributeSchema 'Customer |Customer |Individual|Individual|Quarter|Date' : 17.203 The Log Message.
Run Code Online (Sandbox Code Playgroud)
这是我们的log4j.properties文件中的ConversionPattern值
<param name="ConversionPattern" value="%d{ISO8601} %p %x %X{username}:%t [%c] %m %n" />
Run Code Online (Sandbox Code Playgroud)
有人可以帮我写一个解析该行的Logstash Grok过滤器吗?到目前为止,我有以下内容
filter {
if [type] == "log4j" {
grok {
match => ["message", "%{TIMESTAMP_ISO8601:logdate} %{LOGLEVEL:loglevel} %{GREEDYDATA:messsage}"]
}
date {
match => ["logdate", "yyyy-MM-dd HH:mm:ss,SSS", "ISO8601"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
但当然,它将优先级之后的所有内容作为消息.我想进一步隔离以下字段(在Log4j模式布局中定义)
我能够使以下过滤器工作.
filter {
mutate {
strip => "message"
}
grok {
match => {
"message" => "%{TIMESTAMP_ISO8601:logdate} %{LOGLEVEL:loglevel} :%{DATA:thread} : %{NUMBER:thread_pool} \[(?<classname>[^\]]+)\] %{SPACE} %{GREEDYDATA:msgbody}"
}
}
date {
match => ["logdate", "yyyy-MM-dd HH:mm:ss,SSS", "ISO8601"]
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这特定于上述日志.
我有一个后续问题.我如何"填充"模式来管理每个模式中的"空间".例如,ERROR日志级别占用5个空格,而INFO日志级别占用4个,那么如何管理它以使其适用于ERROR和INFO日志?
| 归档时间: |
|
| 查看次数: |
8343 次 |
| 最近记录: |