У меня есть файл конфигурации log4j2.xml в пути к классу. Один из добавлений - это приложение для файлов, и я хотел бы указать имя целевого файла во время выполнения приложения Java.Log4J2 - присвоение имени файла файла appender во время выполнения
Согласно docs я должен быть в состоянии использовать двойной «$» и контекстную префикс в файле log4j2.xml:
<appenders>
<File name="MyFile" fileName="$${sys:logFilename}">
<PatternLayout pattern="%-4r %d{${datestamp}} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</appenders>
, где приставка «SYS» указывает на то, что конфигуратор будет искать свойство «logFilename» в свойствах системы. Таким образом, в приложении, я называю (скорее рано):
System.setProperty("logFilename", filename);
Я также включил авто-реконфигурации для log4j2 в файле XML:
<configuration status="debug" monitorInterval="5">>
К сожалению, это не имеет никакого эффекта, и файл журнала никогда не создается. Некоторые из выхода состояния log4j2 ниже:
2013-02-13 15: 36: 37574 DEBUG Вызов createAppender на классе org.apache.logging.log4j.core.appender.FileAppender для элемента Файл с Params (имя_файла = "$ {sys: logFilename}", append = "null", lock = "null", name = "MyFile", instantFlush = "null", suppressExceptions = "null", bufferedIO = "null", PatternLayout (% 4r% d {yyyy-MM-dd/HH: mm: ss.SSS/zzz} [% t]% -5level% logger {36} -% msg% n), null)
2013-02-13 15: 36: 37 576 DEBUG Запуск FileManager $ {sys: logFilename}
Как я могу установить значение «имя_файла» в File Appender во время выполнения? В качестве альтернативы, как я могу просто добавить новый File Appender в корневой журнал во время выполнения? В Log4j 2.0 большая часть API для изменения конфигурации скрыта.
Делает SO поиска. Он уже ответил: http://stackoverflow.com/questions/10699358/log4j-creating-modifying-appenders-at-runtime-log-file-recreated-and-not-appe – mightyrick
Это Log4j 2.0, поэтому API очень отличается от Log4j 1.2, и многие из методов предыдущих ответов не отображаются. – user84756