簡體   English   中英

log4j2.xml創建文件,但在文件中不輸出任何內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM