6

just started to get into Graylog2 and wanted to log some Java-Applications via GELF Input. Therefore I used the library log4j2 and added the graylog2-gelfclient. All dependencies are satisfied and the programm is running. But the initialisation of my Logmanager is throwing the following error:

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

My code is just logging an error to the logger:

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

and my log4j2.xml file is configured to use GELF and the 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>

Is anyone familiar with this problem? Thanks for any help.

4

2 回答 2

4

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

此外,尝试将状态输出设置为跟踪

<configuration status="trace" ...

并查看控制台上显示的 log4j 内部日志消息。这应该让您对出了什么问题有一些了解。希望该输出中有一个明确的错误级别消息,告诉我们问题出在哪里。

于 2014-10-22T15:12:49.353 回答
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>

然后我得到了这个错误:“这段代码不应该进入 slf4j-api.jar”

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

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

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.
于 2014-10-23T09:23:29.247 回答