Кто-нибудь может сообщить мне, возможно ли изменить имя файла во время выполнения. Я до сих пор успешно перенесла свои log4j.properties в log4j2.properties. Все создатели приложений, регистраторы. Если я жестко закодирую имя_файла, то мои журналы заполняются. Но, к сожалению, имя журнала должно быть именем службы, и я буду знать имя службы только во время выполнения. Это было возможно раньше с Log4j 1.x. Ранее вызов в файлAppender.setFile (logFile.getAbsolutePath()); изменит имя файла во время выполнения. Теперь мне нужно сделать что-то подобное с log4J 2.4.1. Я попробовал удалить приложение, обновив его программно и добавив приложение в конфигурацию, но не получив успеха. Создаются пустые логфайлы, но с правильным именем. Пожалуйста, кто-нибудь может мне помочь, поскольку я просто не могу это понять. Ниже приведен фрагмент кода, где я пытаюсь удалить, воссоздать приложение.Log4J2 - изменение имени файла во время выполнения
RollingFileAppender fileAppender = (RollingFileAppender) this.config.getAppender(loggerName);
String filePattern = fileAppender.getFilePattern();
TriggeringPolicy policy = fileAppender.getTriggeringPolicy();
RolloverStrategy strategy = fileAppender.getManager().getRolloverStrategy();
PatternLayout layout = (PatternLayout) fileAppender.getLayout();
Filter filter = fileAppender.getFilter();
LoggerConfig lgConfig = this.config.getLogger(loggerName);
RollingFileAppender rollingFile = RollingFileAppender.createAppender(fileName, filePattern, "true", loggerName, (String)null, (String)null, (String)null, policy, strategy, layout, filter, (String)null, "false", (String)null, config);
config.removeAppender(loggerName);
config.removeLogger(loggerName);
config.addLogger(loggerName, lgConfig);
context.updateLoggers();
config.addAppender((Appender)rollingFile);
logger = LogManager.getLogger(loggerName);
"fileName" уже установлен к моменту достижения этого бита кода.
Вызов для обновленияLoggers должен быть последним. –
Пробовал переместить updateLoggers в конец, но все еще пустые журналы. Теперь я проверяю, подходит ли RoutingAppenders для меня. Хотя все примеры routingappenders находятся в log4j2.xml. Я ничего не могу найти для log4j2.properties. – flume
Кроме того, с RoutingAppenders можно создать сочетание приложений для добавления файлов и добавления маршрутизации. В моем приложении есть журналы, имена файлов которых я знаю только во время выполнения (как я уже упоминал в своем первом сообщении), и несколько, чьи имена файлов я уже знаю. Поэтому я могу определить простой файл rollFileAppender и logger для них. Но возможно ли это? – flume