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

Logback 1.2.3升级至1.4.14:移除类替代方案及文档查询

Logback 1.4.14中SiftingJoranConfiguratorBase与AbstractAppenderFactoryUsingJoran的替代方案

1. ch.qos.logback.core.sift.SiftingJoranConfiguratorBase

该类在Logback 1.4.x版本中被移除,替代方案如下:

  • 若无需自定义配置逻辑,直接使用ch.qos.logback.core.sift.SiftingJoranConfigurator,传入对应的Context和AppenderFactory即可完成sift配置加载。
  • 若需自定义配置扩展,可继承ch.qos.logback.core.joran.JoranConfiguratorBase,手动处理sift相关配置节点,结合SiftingAppender的新构造与配置API实现需求。

2. ch.qos.logback.core.sift.AbstractAppenderFactoryUsingJoran

该抽象类被移除后,可通过以下方式替代:

  • 直接实现ch.qos.logback.core.sift.AppenderFactory接口,在buildAppender方法内使用JoranConfigurator解析配置、创建Appender实例。
  • 若默认逻辑满足需求,直接复用ch.qos.logback.core.sift.DefaultAppenderFactory即可,无需自定义实现。

自定义AppenderFactory示例代码

import ch.qos.logback.core.Context;
import ch.qos.logback.core.sift.AppenderFactory;
import ch.qos.logback.core.joran.JoranConfigurator;
import ch.qos.logback.core.Appender;
import java.io.ByteArrayInputStream;

public class CustomAppenderFactory implements AppenderFactory<String> {
    @Override
    public Appender<String> buildAppender(Context context, String discriminatingValue) {
        JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(context);
        
        // 根据区分值生成对应配置
        String configXml = "<appender name=\"FILE-" + discriminatingValue + "\" class=\"ch.qos.logback.core.FileAppender\">\n" +
                          "  <file>logs/" + discriminatingValue + ".log</file>\n" +
                          "  <encoder>\n" +
                          "    <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>\n" +
                          "  </encoder>\n" +
                          "</appender>";
        try {
            configurator.doConfigure(new ByteArrayInputStream(configXml.getBytes()));
            return context.getAppender("FILE-" + discriminatingValue);
        } catch (Exception e) {
            context.getLogger(CustomAppenderFactory.class).error("Failed to build appender for {}", discriminatingValue, e);
            return null;
        }
    }
}

补充说明

Logback 1.4.x对内部API做了精简重构,移除了冗余的抽象基类,核心逻辑合并到了顶层接口与核心实现类中。若需深入理解配置逻辑,可参考SiftingAppender的源码实现,它现在直接依赖AppenderFactory接口创建子Appender,无需中间抽象层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:48:18