什么';这是将Logback配置转换为Java的正确方法

什么';这是将Logback配置转换为Java的正确方法,java,logback,Java,Logback,我尝试将以下配置转换为代码: <appender name="RootSiftAppender" class="ch.qos.logback.classic.sift.SiftingAppender"> <discriminator> <Key>testName</Key> <DefaultValue>platform-setup</DefaultValue&

我尝试将以下配置转换为代码:

<appender name="RootSiftAppender" class="ch.qos.logback.classic.sift.SiftingAppender">
    <discriminator>
      <Key>testName</Key>
      <DefaultValue>platform-setup</DefaultValue>
    </discriminator>
    <sift>
      <appender name="FILE-${testName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_FOLDER}/${testName}.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <FileNamePattern>${LOG_FOLDER}/${testName}.%i.log</FileNamePattern>
          <MinIndex>1</MinIndex>
          <MaxIndex>100</MaxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <MaxFileSize>5MB</MaxFileSize>
        </triggeringPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
          <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%level] %msg%n</Pattern>
        </layout>
      </appender>
    </sift>
  </appender>

测试名
平台设置
${LOG\u FOLDER}/${testName}.LOG
${LOG\u FOLDER}/${testName}。%i.LOG
1.
100
5MB
[%d{yyyy-MM-dd HH:MM:ss.SSS}][%level]%msg%n
这是我目前掌握的代码:

Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();

PatternLayoutEncoder ple = new PatternLayoutEncoder();
ple.setPattern("[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%level] %msg%n");
ple.setContext(lc);
ple.start();

SiftingAppender siftingAppender = new SiftingAppender();

MDCBasedDiscriminator discriminator = new MDCBasedDiscriminator();
discriminator.setKey("testName");
discriminator.setDefaultValue("platform-setup");
discriminator.setContext(lc);
discriminator.start();

siftingAppender.setDiscriminator(discriminator);

AppenderFactory<ILoggingEvent> appenderFactory =
    (Context context, String discriminatingValue) -> {
      /* Create your file appender here, with what ever options you need */
      RollingFileAppender fileAppender = new RollingFileAppender<>();
      FixedWindowRollingPolicy policy = new FixedWindowRollingPolicy();
      policy.setMinIndex(1);
      policy.setFileNamePattern("${LOG_FOLDER}/${testName}.%i.log");
      policy.setContext(context);
      policy.start();

      SizeBasedTriggeringPolicy triggeringPolicy = new SizeBasedTriggeringPolicy();
      triggeringPolicy.setMaxFileSize(FileSize.valueOf("5MB"));
      triggeringPolicy.setContext(context);
      triggeringPolicy.start();

      fileAppender.setName("FILE-${testName}");
      fileAppender.setFile("${LOG_FOLDER}/${testName}.log");
      fileAppender.setTriggeringPolicy(triggeringPolicy);
      fileAppender.setRollingPolicy(policy);
      fileAppender.setEncoder(ple);
      fileAppender.setContext(context);
      fileAppender.setAppend(true);
      fileAppender.start();
      return fileAppender;
    };
siftingAppender.setAppenderFactory(appenderFactory);
siftingAppender.setContext(lc);
siftingAppender.start();
root.addAppender(siftingAppender);
root.setAdditive(true);
Logger root=(Logger)LoggerFactory.getLogger(Logger.root\u Logger\u NAME);
LoggerContext lc=(LoggerContext)LoggerFactory.getILoggerFactory();
PatternLayoutCoder ple=新的PatternLayoutCoder();
ple.setPattern(“[%d{yyyy-MM-dd HH:MM:ss.SSS}][%level]%msg%n”);
ple.setContext(lc);
ple.start();
SiftingAppender SiftingAppender=新的SiftingAppender();
MDCBasedScriminator鉴别器=新的MDCBasedScriminator();
discriminator.setKey(“testName”);
鉴别器.setDefaultValue(“平台设置”);
鉴别器。设置上下文(lc);
discriminator.start();
筛选附加器。设置鉴别器(鉴别器);
附件工厂附件工厂=
(上下文,字符串判别值)->{
/*在这里创建您的文件附加器,使用您需要的任何选项*/
RollingFileAppender fileAppender=新的RollingFileAppender();
FixedWindowRollingPolicy=新的FixedWindowRollingPolicy();
政策。setMinIndex(1);
policy.setFileNamePattern(“${LOG_FOLDER}/${testName}.%i.LOG”);
policy.setContext(context);
policy.start();
SizeBadeTriggeringPolicy triggeringPolicy=新的SizeBadeTriggeringPolicy();
triggeringPolicy.setMaxFileSize(FileSize.valueOf(“5MB”);
triggeringPolicy.setContext(context);
triggeringPolicy.start();
setName(“文件-${testName}”);
setFile(“${LOG_FOLDER}/${testName}.LOG”);
fileAppender.setTriggeringPolicy(triggeringPolicy);
fileAppender.setRollingPolicy(策略);
fileAppender.setEncoder(ple);
setContext(context);
setAppend(true);
fileAppender.start();
返回文件追加器;
};
筛选Appender.setAppenderFactory(appenderFactory);
筛选appender.setContext(lc);
siftingAppender.start();
root.addAppender(筛选appender);
root.setaddition(真);
我从XML文件中注释掉了appender:

  <root level="DEBUG">
    <!--<appender-ref ref="RootSiftAppender"/>-->
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="STDERR"/>
  </root>

重命名该文件以确保它不会显示,但不会出现运气问题。你知道为什么它不起作用吗