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

如何配置Spring将指定类的ERROR日志级别调整为WARN?

如何将DefaultMessageListenerContainer的连接失败日志从ERROR调低至WARN?

当然可以实现,核心是通过日志框架(而非Spring本身)的配置来调整日志级别或重写特定日志的输出级别,以下是两种常见场景的实现方式:

一、快速方案:全局调整该类的日志级别

如果你可以接受org.springframework.jms.listener.DefaultMessageListenerContainer类的所有ERROR级日志都以WARN级别输出(或只保留WARN及以下级别的日志),直接在日志配置文件中添加规则即可:

Logback(logback.xml)

<logger name="org.springframework.jms.listener.DefaultMessageListenerContainer" level="WARN" />

Log4j2(log4j2.xml)

<Logger name="org.springframework.jms.listener.DefaultMessageListenerContainer" level="WARN" additivity="false">
    <AppenderRef ref="你的日志输出Appender"/>
</Logger>

二、精准方案:仅降级连接失败相关的ERROR日志

如果不想影响该类其他正常的ERROR日志,只针对连接失败的特定日志消息降级,可以通过自定义过滤/重写机制实现:

Logback 自定义TurboFilter

  1. 编写一个过滤器类,识别连接失败的日志并修改级别:
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.turbo.TurboFilter;
import ch.qos.logback.core.spi.FilterReply;
import org.slf4j.Marker;

public class JmsConnErrorFilter extends TurboFilter {
    @Override
    public FilterReply decide(Marker marker, ch.qos.logback.classic.Logger logger, Level level, String format, Object[] params, Throwable t) {
        // 匹配目标类、ERROR级别、连接失败的日志消息
        if ("org.springframework.jms.listener.DefaultMessageListenerContainer".equals(logger.getName()) 
            && Level.ERROR.equals(level) 
            && format != null && format.contains("Could not refresh JMS Connection")) {
            // 以WARN级别重新输出该日志
            logger.warn(format, params, t);
            return FilterReply.DENY; // 阻止原ERROR日志输出
        }
        return FilterReply.NEUTRAL; // 其他日志正常处理
    }
}
  1. 在logback.xml中注册这个过滤器:
<turboFilter class="com.你的包名.JmsConnErrorFilter" />

Log4j2 使用RewriteAppender

通过RewriteAppender匹配特定日志并修改级别:

<Appenders>
    <Rewrite name="JmsRewriteAppender">
        <AppenderRef ref="你的原有输出Appender"/>
        <RewritePolicy class="org.apache.logging.log4j.core.appender.rewrite.MapRewritePolicy">
            <KeyValuePair key="level" value="WARN"/>
            <!-- 匹配规则:目标类、ERROR级别、连接失败消息 -->
            <Condition>
                <LoggerNameMatch name="org.springframework.jms.listener.DefaultMessageListenerContainer"/>
                <LevelMatch level="ERROR"/>
                <MessageMatch regex="Could not refresh JMS Connection.*"/>
            </Condition>
        </RewritePolicy>
    </Rewrite>
</Appenders>
<Loggers>
    <Logger name="org.springframework.jms.listener.DefaultMessageListenerContainer" level="ERROR" additivity="false">
        <AppenderRef ref="JmsRewriteAppender"/>
    </Logger>
</Loggers>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:25:22