Несогласованная регистрация в многопоточной среде - PullRequest
0 голосов
/ 07 февраля 2020

Создание другого каталога во время выполнения для хранения журнала разных клиентов. Но заметил, что журналы CustomerA появляются в файле журнала CustomerB и наоборот.

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

public static void configureLogback(String orgId) {
    try {
        InputStream in = LogbackConfigListener.class.getClassLoader()
                        .getResourceAsStream("/logback.xml");
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        loggerContext.reset();
        String logpath = System.getenv("LOG4J_LOG_PATH");
        if(logpath == null) {
            logpath = System.getProperty("LOG4J_LOG_PATH"); 
        }
        System.out.println(logpath);
        loggerContext.putProperty("LOG4J_LOG_PATH", logpath+"/"+orgId);
        JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(loggerContext);
        configurator.doConfigure(in); // loads logback file
    } catch (JoranException e) {
        System.err.println(e.getMessage());
    }
}

Поскольку LoggerContext является одноэлементным экземпляром, я надеюсь, что это создает проблему.

Не знаю, как действовать дальше. Любая помощь будет оценена.

...