什么是我输入正确的神交过滤器?

问题描述 投票:1回答:1

我投入的样子:

"message" => "ERROR | [default task-55] my.package.className(Class.java:184) | - logstash-ERROR LOG\r",

我logstash配置:

filter {
  grok {
    match => {"message" => "%{WORD:logLevel} | %{WORD:task} %{WORD:callfrom} | - %{WORD:logmessage}"}
  }
}

对log4j的我的配置XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
    <Appenders>
        <File name="FILE" fileName="logfile.log" append="true">
            <PatternLayout pattern="%p | [%t] %l | - %m%n"/>
        </File>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%p | [%t] %l | - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.memorynotfound" level="debug"/>
        <Root level="info">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="FILE"/>
        </Root>
    </Loggers>
</Configuration>

在kibana我看到日志级别是确定的,我得到正确的记录水平,但换句话说,我不能得到,我从过滤错过了什么?感谢您的帮助!

UPDATE

我想这样的代码:

^(%{WORD:logLevel}) (%{TASK_PATTERN:task}) (%{CLASS:callfrom}) (%{GREEDYDATA:logmessage})$

我的自定义模式:

TASK_PATTERN (^\[.*\]$)
CLASS .*\)

但但它是找到公正的日志级别

logstash logstash-grok
1个回答
1
投票

这可能是可能得到比这更具体的,但根据grokconstructor,以下工作:

%{WORD:level} \| \[%{WORD:task} %{NOTSPACE:callfrom}\] %{DATA:javaclass} \| - %{GREEDYDATA:message}

请记住,任何不匹配的字符,如|[仍然需要占神交之内。此外,these patterns是你可以免费做一个很好的参考点。

© www.soinside.com 2019 - 2024. All rights reserved.