[英]log4j2.xml creates file, but does not output anything in the file
我有一個log4j2.xml文件和一個類,並且正在嘗試使用兩者來測試日志記錄,但是無法打印到我的輸出文件中。 我的log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="MyFile" fileName="C:\Tomcat\logs\all.log" immediateFlush="false"
append="false">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} -
%msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" level="info" />
<AppenderRef ref="MyFile" level="info"/>
</Root>
</Loggers>
</Configuration>
我的程序是以下代碼:
public class LoggingTest {
Logger testLog = LogManager.getLogger("Log_File");
public String setString(String test)
{
if (test=="warn")
{
testLog.warn("Error");
return "no";
}
else
testLog.info("Complete");
return "yes";
}
/**
* @param args
*/
public static void main(String[] args) {
LoggingTest a=new LoggingTest();
System.out.println(a.setString("warn"));
}
}
我的日志記錄可以打印到控制台,沒有問題,並在正確的位置創建了日志文件,但是沒有文本寫入該日志文件。 可能是什么原因造成的? 與我的log4j2.xml文件有關?
問題是您為附加程序設置了InstantFlush immediateFlush="false"
。 這意味着日志輸出不會立即添加到文件中,而是會添加到緩沖區中,等待緩沖區填滿。 緩沖區填滿后,數據將一口氣寫入文件中。 這種方法的優點是,它將比多次寫入小文件更快。 您已經遇到的一個缺點是無法實時監視日志。 另一件事值得擔心的是,如果您的應用程序意外停止,則緩沖區中的日志數據可能會丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.