log4j appender 只将我的消息发送到 stdout,而不是远程 GELF appender
log4j appender only sending my messages to stdout, but not remote GELF appender
我遇到了一个奇怪的问题,log4j 在控制台上正确显示了我所有的日志消息,但只将日志消息发送到我没有写的 graylog 服务器(例如,我正在使用的库写入log.info
会出现在 graylog 中,但不会出现我用 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);
并写入我的日志:
logger.info("WHY CAN'T I SEE THIS IN MY GRAYLOG SERVER");
编辑:
您正在指定包 com.test
的记录器只应写入 stdout
appender。
<logger name="com.test" level="info" additivity="false">
<appender-ref ref="stdout" />
</logger>
您应该将其更改为:
<logger name="com.test" level="info" />
确保您的应用 运行 具有与 gelf appender 匹配的配置文件。
我遇到了一个奇怪的问题,log4j 在控制台上正确显示了我所有的日志消息,但只将日志消息发送到我没有写的 graylog 服务器(例如,我正在使用的库写入log.info
会出现在 graylog 中,但不会出现我用 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);
并写入我的日志:
logger.info("WHY CAN'T I SEE THIS IN MY GRAYLOG SERVER");
编辑:
您正在指定包 com.test
的记录器只应写入 stdout
appender。
<logger name="com.test" level="info" additivity="false">
<appender-ref ref="stdout" />
</logger>
您应该将其更改为:
<logger name="com.test" level="info" />
确保您的应用 运行 具有与 gelf appender 匹配的配置文件。