Изменения MDC не выбираются, а загружаются весной при входе в систему - PullRequest
0 голосов
/ 26 июня 2019

Мне нужно настроить местоположение журнала динамически , поэтому я создал SiftingAppender в logback.xml

 <appender name="roleSiftingAppender" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator>
            <key>userRole</key>
            <defaultValue>ANONYMOUS</defaultValue>
        </discriminator>
        <sift>
            <appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
                <file>${userRole}.log</file>
                <encoder
                        class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                    <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
                </encoder>
            </appender>
        </sift>
  </appender>

и теперь мне нужно динамически изменить userRoleпоэтому изменения будут выбраны.

 MDC.put("userRole","priyamal");

, но изменения не будут выбраны в приложении весенней загрузки, но если мы изменим файл журнала программно, будут добавлены новые изменения, вот как я делаю это программно

 static void programmaticConfiguration() {
                 // Configure logback
                  LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
                  loggerContext.reset();
                  PatternLayoutEncoder layout = new PatternLayoutEncoder();
                  layout.setContext(loggerContext);
                  layout.setPattern("%X{first} %X{last} - %m%n");
                  layout.start();
                  ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent>();
                  appender.setContext(loggerContext);
                  appender.setEncoder(layout);
                  appender.start();
                  // cast root logger to c.q.logback.classic.Logger so that we can attach
                  // an appender to it
                  ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("root");
                  root.addAppender(appender);
              }

Я включил <configuration scan="true"> в файле logback.xml, и я даже попытался вызвать эту функцию, которая настроит XML-файл согласно документации https://logback.qos.ch/xref/chapters/mdc/SimpleMDC.html

static void XMlConfig(){
        try {
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(loggerContext);
        loggerContext.reset();
        configurator.doConfigure(ResourceUtils.getFile("classpath:logback.xml"));
        } catch (JoranException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

, но ничего не помоглоя что-то пропустил ?любая помощь будет оценена.

...