gpt4 book ai didi

java - log4j2.xml 创建文件,但不输出文件中的任何内容

转载 作者:行者123 更新时间:2023-12-01 12:45:19 25 4
gpt4 key购买 nike

我有一个 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 文件相关的东西?

最佳答案

问题是您为附加程序设置了 immediateFlush="false" 。这意味着日志输出不会立即添加到文件中,而是添加到缓冲区中,等待缓冲区填满。一旦缓冲区填满,数据将被一次性写入文件。这种方法的优点是会比多个小文件写入更快。您已经遇到的一个缺点是您无法实时监控日志。另一件需要担心的事情是,如果您的应用程序意外停止,缓冲区中的日志数据可能会丢失。

关于java - log4j2.xml 创建文件,但不输出文件中的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com