Это относится к log4j2 версии 2.13.2 .
Мы используем API, который поставляется с собственным файлом конфигурации регистратора, например - log4j2_api. xml. Как разработчик приложения, у нас есть собственный log4j2. xml в пути к классам.
API, который мы используем, внутренне загружает объекты log4j2 (регистраторы и приложения) из log4j2_api . xml. Похоже, когда это происходит, наша собственная конфигурация из log4j2. xml перезаписывается log4j2_api. xml, и наше приложение больше не создает журналов.
Вот краткая последовательность событий -
- Приложение запускается и log4j2. xml загружается из пути к классам.
- Приложение продолжается с соответствующим ведением журнала, как ожидалось.
- Произойдет первый вызов API. Внутренне загружается log4j2_api. xml, и ведение журнала API происходит в соответствии с его конфигурацией.
- Приложение получает необходимые данные от API и продолжает работу, но без желаемой регистрации.
Мое ожидание здесь: - если в новой конфигурации обнаружены предварительно загруженные (по начальной конфигурации) регистраторы / приложения, они должны быть обновлены, а другие должны остаться нетронутыми. И, конечно же, должны быть добавлены недавно настроенные регистраторы / приложения.
Правильно ли это понимание?
Заранее спасибо.
Файлы конфигурации -
log4j2. xml
<Configuration status="warn">
<Appenders>
<RollingFile name="applicationAppender" fileName="sample-log-executor-2008.log" filePattern="sample-log-executor-2008-%i.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 MB" />
</Policies>
</RollingFile>
<Console name="console_window" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.abc.samplecode" level="trace" additivity="false">
<appender-ref ref="applicationAppender" level="trace" />
</Logger>
<Root level="error" additivity="false">
<appender-ref ref="console_window" />
</Root>
</Loggers>
</Configuration>
log4j_api. xml
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d %-5p [%t] %C (%F:%L) - %m%n" />
</Console>
<RollingFile name="xyzAPIAppender" fileName="xyzAPILog.log"
filePattern="xyzAPILog-%i.log">
<PatternLayout
pattern="%d{MMM dd yyyy HH:mm:ss.SSS} %-5p [%t] (%27F:%-5L) - %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="5 MB" />
</Policies>
<DefaultRolloverStrategy max="10" />
</RollingFile>
</Appenders>
<Loggers>
<logger name="com.xyz.api" level="warn"
additivity="false">
<AppenderRef ref="xyzAPIAppender" />
</logger>
</Loggers>
</Configuration>