Я хочу перейти с Log4j 1.2 на 2.4. Поскольку я запускаю несколько экземпляров своей программы на одних и тех же машинах, я хочу включить идентификатор (называемый clientId в следующем коде) в файл журнала. Поэтому я использовал способ Log4j 1.2 для программной настройки FileAppender:
int clientId = ?// gets set before
FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("logs/client_" + clientId + ".log");
fa.setLayout(new PatternLayout("%d %-5p %c{1} %m%n"));
fa.setThreshold(Level.INFO);
fa.setAppend(true);
fa.activateOptions();
Logger.getRootLogger().addAppender(fa);
Мне не удалось добиться чего-то подобного с Log4j 2.0, поскольку они убрали возможность напрямую изменять эти свойства. Вместо этого я попытался использовать CustomConfigurationFactory, как описано в https://logging.apache.org/log4j/2.x/manual/customconfig.html#Example Но я не понимаю, как мне это использовать? В документации указано
Это приведет к автоматическому подключению конфигурации к Log4j при создании LoggerContext.
Я пробовал что-то вроде:
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.getConfiguration(CustomConfigurationFactory.getInstance());
но это не работает.