log4j附加程序仅将我的消息发送到stdout,但不发送远程GELF附加程序

时间:2018-12-07 19:55:58

标签: java logback log4j2 graylog2

我遇到一个奇怪的问题,其中log4j可以在控制台上正确显示我的所有日​​志消息,但是仅将日志消息发送到我未编写的Graylog服务器(例如,我正在使用的库中写入{{ 1}}将显示在灰色日志中,但不会显示我用log.info写的任何消息)。我想念什么

这是我的log.info

logback-spring.xml

我正在通过以下方式实例化日志:

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

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

            <includeFullMdc>true</includeFullMdc>
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
        </appender>
    </springProfile>

    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
            </Pattern>
        </layout>
    </appender>

    <logger name="com.test" level="info" additivity="false">
        <appender-ref ref="stdout" />
    </logger>

    <root level="INFO">
        <appender-ref ref="gelf" />
        <appender-ref ref="stdout" />
    </root>

</configuration>

并写入我的日志:

 private static final Logger logger = LogManager.getLogger(MyClass.class);

1 个答案:

答案 0 :(得分:1)

编辑: 您正在指定软件包com.test的记录器仅应写入stdout附加程序。

<logger name="com.test" level="info" additivity="false">
   <appender-ref ref="stdout" />
</logger>

您应该将其更改为:

<logger name="com.test" level="info" />

确保您正在使用与Gelf Appender匹配的配置文件运行应用程序。