You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将所有控制台日志(含异常)发送至Graylog?

解决未捕获异常无法发送至Graylog的问题

问题原因

直接抛出的未捕获异常通常会被Spring框架或Servlet容器(如Tomcat)的日志组件捕获并打印,这些日志的Logger名称并非你配置的com.nar.hexademo,而是类似org.springframework.web、org.apache.catalina这类框架级别的Logger。你的当前配置仅对com.nar.hexademo包下的日志启用了GELF Appender,框架打印的异常日志只会走Root Logger的STDOUT,因此无法发送到Graylog。

解决方案

方案1:让Root Logger关联GELF Appender(推荐)

在dev环境的SpringProfile中,修改Root Logger的配置,添加GELF Appender的引用。这样所有日志(包括框架打印的异常)都会同时输出到控制台和Graylog,而你自定义的com.nar.hexademo Logger由于设置了additivity="false",不会产生重复日志。

修改后的配置片段:

<SpringProfile name="dev">
    <!-- 原有springProperty、GELF Appender配置保持不变 -->

    <!-- 修改Root Logger,添加GELF Appender -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="GELF" />
    </root>

    <!-- 原有com.nar.hexademo Logger配置保持不变 -->
</SpringProfile>

方案2:单独配置框架级Logger

如果你不想让所有Root日志都发送到Graylog,可以单独为框架中处理未捕获异常的Logger添加GELF Appender。例如,针对Spring MVC的异常处理器和Tomcat容器的Logger:

<SpringProfile name="dev">
    <!-- 原有springProperty、GELF Appender、自定义Logger配置保持不变 -->

    <!-- 配置Spring MVC异常处理器的Logger -->
    <logger name="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver" additivity="false">
        <level value="ERROR"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="GELF"/>
    </logger>

    <!-- 配置Tomcat容器的Logger -->
    <logger name="org.apache.catalina.core.ContainerBase.[Tomcat].[localhost]" additivity="false">
        <level value="ERROR"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="GELF"/>
    </logger>
</SpringProfile>

补充:确保异常栈信息被正确编码

检查GELF Encoder的fullPatternLayout配置,确保异常栈信息被包含。将原有%m%n修改为%m%n%ex,这样异常的完整栈轨迹会被写入GELF消息:

<fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
    <pattern>%m%n%ex</pattern>
</fullPatternLayout>

验证

修改配置后,重启应用并抛出未捕获异常,查看Graylog是否接收到对应的日志条目,同时确认控制台输出正常。

内容的提问来源于stack exchange,提问作者Sha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:39:53