我正在做一个Java项目,我已经将Log4j API Version 2
集成到我的程序中(第一次是CLearly,我不知道它是如何工作的,所以如果我的问题看起来很容易就不要责怪包在我身上 ) 。我的log4j.properties的内容如下:
log4j.rootLogger=DEBUG,SAWAN
log4j.appender.SAWAN=org.apache.log4j.ConsoleAppender
log4j.appender.SAWAN.layout=org.apache.log4j.SimpleLayout
然后我将log4j库导入到我的类中,出于调试目的,我编写了以下内容并显示了输出
//My Code
PropertyConfigurator.configure("log4j.properties");
logger.debug("Sample debug message");
logger.info("Sample info message");
logger.warn("Sample warn message");
logger.error("Sample error message");
logger.fatal("Sample fatal message");
//Output
DEBUG - Sample debug message
INFO - Sample info message
WARN - Sample warn message
ERROR - Sample error message
FATAL - Sample fatal message
这意味着log4j工作正常。我怎么想更改输出的格式并为其添加时间戳。基于我对本网站提出的其他问题的研究,并参考https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html我知道我需要使用类似的东西:
[%t] %-5p %c %x - %m%n
但是一旦我将它添加到我的log4j.properties中,我就收到了一个错误。我的问题是我应该在哪里指定日志输出的输出格式。
以下是我导入的库:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.PatternLayout;
值得一提的是我尝试将以下内容添加到我的log4j.properties中:log4j.appender.ConsoleAppender.layout.ConversionPattern=[%-5p] %d %c - %m%n
然而我一直在收到错误,我的log4j.properties有些问题,当我删除它时它不是这种情况,它会正常工作:)
答案 0 :(得分:2)
您需要在类路径上使用名为log4j2.properties
的文件自动选取。
Log4j2的文档:
Log4j具有在此期间自动配置的能力 初始化。当Log4j启动时,它会找到所有的 ConfigurationFactory插件并按加权顺序排列 从最高到最低。交付时,Log4j包含四个 ConfigurationFactory实现:一个用于JSON,一个用于YAML,一个 对于属性,一个用于XML。
Log4j将检查“log4j.configurationFile”系统属性, 如果设置,将尝试使用加载配置 与文件扩展名匹配的ConfigurationFactory。
- 如果未设置系统属性,则ConfigurationFactory属性将为 在类路径中查找log4j2-test.properties。
- 如果找不到这样的文件,YAML ConfigurationFactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
- 如果找不到这样的文件,JSON ConfigurationFactory将在类路径中查找log4j2-test.json或log4j2-test.jsn。
- 如果找不到这样的文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
- 如果找不到测试文件,ConfigurationFactory属性将在类路径上查找log4j2.properties。
- 如果无法找到属性文件,YAML ConfigurationFactory将在类路径中查找log4j2.yaml或log4j2.yml。
- 如果找不到YAML文件,JSON ConfigurationFactory将在类路径中查找log4j2.json或log4j2.jsn。
- 如果找不到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.xml。
- 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志记录输出进入控制台。
醇>
您可以在此处找到有关log4j2配置的所有文档:https://logging.apache.org/log4j/2.x/manual/configuration.html
感谢D.B.指出了正确答案。