我有一个play-2.2.3应用程序。我想使用GELF-TCP将日志发送到graylog2服务器。我尝试使用me.moocar GELF logback附加程序,但似乎存在问题,因为它是使用其他版本的logback核心jar进行编译的。

我可以配置logback将日志(通过TCP或UDP)发送到其他地方托管的graylog2实例吗?

最佳答案

您可以尝试logstash-gelf。它支持TCP和UDP通道(UDP是非阻塞的)。 logstash-gelf是针对经典经典logback版本1.0.13编译的。

配置示例:

<!DOCTYPE configuration>

<configuration>
    <contextName>test</contextName>
    <jmxConfigurator/>

    <appender name="gelf" class="biz.paluch.logging.gelf.logback.GelfLogbackAppender">
        <host>udp:localhost</host>
        <port>12201</port>
        <version>1.1</version>
        <facility>java-test</facility>
        <extractStackTrace>true</extractStackTrace>
        <filterStackTrace>true</filterStackTrace>
        <mdcProfiling>true</mdcProfiling>
        <timestampPattern>yyyy-MM-dd HH:mm:ss,SSSS</timestampPattern>
        <maximumMessageSize>8192</maximumMessageSize>

        <!-- This are static fields -->
        <additionalFields>fieldName1=fieldValue1,fieldName2=fieldValue2</additionalFields>

        <!-- This are fields using MDC -->
        <mdcFields>mdcField1,mdcField2</mdcFields>
        <dynamicMdcFields>mdc.*,(mdc|MDC)fields</dynamicMdcFields>
        <includeFullMdc>true</includeFullMdc>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="gelf" />
    </root>
</configuration>

10-08 19:35