6

我需要让我的 Java 应用程序将日志记录到 Graylog2 服务器。该应用程序使用 log4j 配置。我尝试将日志写入 Graylog2 服务器的几件事,我所做的工作是将测试消息直接发送到服务器,如此处所示第一个示例)。

然而,当我编写一个附加程序并将其附加到根记录器时,我总是在第一次触发日志事件时收到此错误消息:

log4j:错误无法发送 GELF 消息

Graylog2 服务器端什么也没有发生。

我尝试使用的附加程序:

<appender name="graylog2" class="org.graylog2.log.GelfAppender">
    <param name="graylogHost" value="127.0.0.1"/>
    <param name="originHost" value="my.machine.example.com"/>
    <param name="extractStacktrace" value="true"/>
    <param name="addExtendedInformation" value="true"/>
    <param name="facility" value="gelf-java"/>
    <param name="Threshold" value="INFO"/>
    <param name="additionalFields" value="{'environment': 'DEV', 'application': 'MyAPP'}"/>
</appender>

有谁知道如何让它运行?
非常感谢任何帮助!

4

3 回答 3

6

这项工作对我有用:

在您的 maven pom 文件中添加此依赖项

       <dependency>
            <groupId>org.graylog2</groupId>
            <artifactId>gelfj</artifactId>
            <version>1.1.13</version>
        </dependency>

以及 log4j.properties 中的这些行

# Define the graylog2 destination
log4j.appender.graylog2=org.graylog2.log.GelfAppender
log4j.appender.graylog2.graylogHost=192.168.243.23 
log4j.appender.graylog2.port=12201
log4j.appender.graylog2.originHost=loggenerator-server-ip
log4j.appender.graylog2.layout=org.apache.log4j.PatternLayout
log4j.appender.graylog2.additionalFields={'environment': 'DEV', 'application': 'MyAPP'}
log4j.appender.graylog2.extractStacktrace=true
log4j.appender.graylog2.addExtendedInformation=true
log4j.appender.graylog2.facility=gelfappender-test
于 2016-02-03T05:45:55.053 回答
1

通过java代码我附加了GelfAppender,甚至我得到了同样的错误:

log4j:ERROR Could not send GELF message

我发现错误的原因是我没有调用

activateOptions();

此函数将设置我们使用初始化的 gelfSender

private GelfSender gelfSender;

一旦gelfSender设置为 sumthing ,消息就可以发送到GELF

这是我用来获取的代码GelfAppender

GelfAppender appender = new GelfAppender();
    appender.setName("GrayLogAppender");
    appender.setGraylogHost("localhost");
    appender.setGraylogPort(12201);
    appender.setFacility("gelf-java");
    appender.setOriginHost("localhost");
    appender.setLayout(lyt);
    appender.setExtractStacktrace(true);
    appender.setAddExtendedInformation(true);
    appender.setAdditionalFields("{'environment': 'DEV', 'application':'MyAPP'}");
    appender.activateOptions();
于 2015-01-20T08:08:14.703 回答
0

查看catalina.out(通常位于下方tomcat/logs)与 Gelf 相关的错误消息

于 2016-11-23T14:15:42.133 回答