gpt4 book ai didi

java - 为什么我的 log4j 类只记录 FATAL 消息?

转载 作者:行者123 更新时间:2023-12-02 05:04:38 24 4
gpt4 key购买 nike

我有以下 log4j Java 类:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Level;

public class HelloWorldLog4J {

private static final Logger logger = LogManager.getLogger("HelloWorld");


public static void main(String[] args) {

System.out.println("pre_loggerDOTinfo");
System.out.println();
//logger.setLevel(Level.FATAL); //used to be..

logger.info("Hello, this is an INFO message");
logger.warn("Hello, this is an WARN message");
logger.fatal("Hello, this is an FATAL message");
logger.fatal("Hello, this is an FATAL message ALSO, #2");
logger.fatal("Hello, this is an FATAL message ALSO, #3");
logger.fatal("Hello, this is an FATAL message ALSO, #4");
logger.debug("Hello, this is an FATAL message");

logger.info("Hello, this is an INFO message");
logger.info("Hello, this is an INFO message");
System.out.println();
System.out.println("post_loggerDOTinfo");

}

}

在同一目录中,我有一个 log4j 属性文件:

# Root logger option
log4j.rootLogger=WARN, Console


# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File= C:\\Users\\adel\\Desktop\\Misc_Stuff\\Java_Code\\logging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

如你所见,我注释掉了 logger.setLevel(Level.FATAL) 代码,因为它导致我的程序崩溃(说它找不到 setLevel,即使我尝试了toLevel 它不起作用)

我的输出是这样的:

pre_loggerDOTinfo

16:47:09.575 [main] FATAL HelloWorld - Hello, this is an FATAL message 16:47:09.575 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #2

16:47:09.575 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #3

16:47:09.575 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #4

post_loggerDOTinfo

我对我的类中使用的属性文件有点困惑。有没有办法追溯到我使用的 log4j 版本,以及它从哪里获取 log4j 属性信息?

感谢任何提示,谢谢!~

最佳答案

您的应用程序使用 log4j2 类(包为 org.apache.logging.log4j,而 log4j-1.x 位于 org.apache.log4j 命名空间中) .

但是,您的配置是针对 log4j-1.x 的属性文件。

Log4j2 不理解基于属性文件的配置。您必须提供 XML(或 Jason 或 YAML)配置文件。 Log4j2 将在类路径中查找名为 log4j2.xml 的配置文件。如果将其放在其他位置,则需要使用 log4j.configurationFile 系统属性告诉 log4j2 路径。

log4j2 manual有许多示例配置(文档比 log4j-1.x 好得多);我建议从 RollingFile appender 显示的示例配置开始.

如果 Log4j2 找不到配置,它将使用仅以 ERROR 和 FATAL 级别记录到控制台的默认配置。

最后,请注意,使用 log4j2,您need类路径中的 log4j-api 和 log4j-core jar 文件。

关于java - 为什么我的 log4j 类只记录 FATAL 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27892980/

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