我在我的應用程序中使用Log4j2,它似乎加載和初始化罰款。 控制檯登錄後,2個指定的文件appender創建它們各自的文件,但這些文件保持空白!Log4j2不記錄到文件
我的配置有問題嗎?我是否以錯誤的方式啓動Log4j2?
這裏的配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE">
<Appenders>
<File name="file" fileName="${sys:logdir}ftm.log">
<PatternLayout pattern="%d{MM.dd.yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<File name="file_error" fileName="${sys:logdir}ftm_error.log">
<PatternLayout pattern="%d{MM.dd.yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{MM.dd.yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="ALL">
<AppenderRef ref="file" level="ALL"/>
<AppenderRef ref="STDOUT" level="ALL"/>
</Root>
<Logger name="FTM" level="ALL" additivity="true">
<AppenderRef ref="file_error" level="ERROR"/>
</Logger>
</Loggers>
</Configuration>
而這裏的代碼:
LoggerContext contextLogging = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
File file = new File("log4j2.xml");
if (file != null && file.isFile() && file.canRead()){
contextLogging.setConfigLocation(file.toURI());
}
我開始在不同的點在整個初始化位後的應用程序登錄。
有沒有辦法可以強制這種行爲?因爲只是關閉應用程序不會觸發。 – Plsplsplsplsplspls
不是我知道的,對不起。我在我的web應用程序中嘗試過你的XML配置,它對我來說很有用,它只是在我關閉Web應用程序之前才發生對文件的寫入。我的設置在幾個方面有所不同。我使用硬編碼文件路徑'/ usr/tmp/tmp.log'而不是使用'$ {sys:logdir} my.log'的變量。另外,我使用Spring爲我初始化Log4j2,所以我沒有配置的Java代碼。 –
您可以檢查的另一件事是Log4j2文檔(http://logging.apache.org/log4j/2.x/manual/webapp.html)中有一節介紹了servlet 3.0和2. *的配置。他們稍有不同,所以仔細檢查一下。我希望有所幫助。 –