有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何让GELFJ appender在log4j中工作?

我需要写我的应用程序日志。 该应用程序使用log4j配置。 我曾尝试将日志写入Graylog2服务器,但我的工作是直接向服务器发送测试消息,如here(第一个示例)所示

然而,当我编写appender并将其连接到根记录器时,我总是在第一次触发日志事件时收到以下错误消息:

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>

有人知道如何让它运行吗
非常感谢您的帮助


共 (3) 个答案

  1. # 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();
    
  2. # 2 楼答案

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

  3. # 3 楼答案

    这项工作让我工作:

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

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

    在你的log4j中有这些线。属性

    # 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