log4j2-gelf“ERROR StatusLogger appenders包含无效的元素或属性”GELF“”

时间:2014-10-21 15:03:55

标签: java logging log4j2 graylog2 gelf

刚开始进入Graylog2并希望通过GELF输入记录一些Java应用程序。 因此我使用了库log4j2并添加了graylog2-gelfclient。所有依赖项都得到满足并且程序正在运行。但是我的Logmanager的初始化引发了以下错误:

ERROR StatusLogger appenders contains an invalid element or attribute "GELF"

我的代码只是将错误记录到记录器:

static final Logger logger = LogManager.getLogger(Application.class); 
    public static void main(String[] args) {
        logger.error("This is an error log entry");
    }
}

我的log4j2.xml文件配置为使用GELF和GelfAppender:

<configuration status="OFF">
    <appenders>
        <GELF name="gelfAppender" server="192.168.1.1" port="12201" hostName="myhost"/>
    </appenders>
    <loggers>
        <root level="info">
            <appender-ref ref="gelfAppender"/>
        </root>
    </loggers>
</configuration>

有人熟悉这个问题吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

听起来这两个依赖项都存在问题,或者log4j在加载或初始化GELF appender插件时遇到其他问题。对于log4j2和log4j2-gelf,提一下你的确切依赖关系可能是一个好主意。 (否则我们必须猜测......)

此外,尝试使用

设置状态输出以进行跟踪
<configuration status="trace" ...

并查看控制台上显示的log4j内部日志消息。这应该可以让您深入了解出了什么问题。希望输出中有一个清晰的ERROR级别消息,告诉我们问题所在。

答案 1 :(得分:3)

刚设法解决问题:)

首先,我将包含GELF-appender的包的名称放入log4j2.xml文件中。

<configuration status="OFF" packages="org.graylog2.log4j2">
   <appenders>
      <GELF name="gelfAppender" server="192.168.1.1" port="12202" hostName="myhost"></GELF>
   </appenders>
   <loggers>
      <root level="info">
         <AppenderRef ref="gelfAppender"/>
      </root>
   </loggers>

然后我收到了这个错误:&#34;这段代码应该从未进入过slf4j-api.jar&#34;

我没有首先使用Maven来获得所有需要的包。所以我使用了Maven,这给了我提示,导入的slf4j-api .java文件不是预期的。 如果您下载官方SLF4J发行版,请注意您导入的文件。首先,我从文件夹&#34; slf4j-api&#34;中导入了java文件。 - 但是这个文件夹包含&#34; impl&#34;导致我上面提到的错误的文件夹。 所以我导入了sl4j-api-1.7.7.jar,它也在官方SLF4J发行版中(这个jar不包含&#34; impl&#34; -package)现在它工作正常。

注意:运行程序时收到此消息:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.