log4j V2中log4j.properties的内容并形成记录器输出(例如添加时间戳)

时间:2016-10-07 06:51:20

标签: java log4j log4j2

我正在做一个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有些问题,当我删除它时它不是这种情况,它会正常工作:)

1 个答案:

答案 0 :(得分:2)

您需要在类路径上使用名为log4j2.properties的文件自动选取。

Log4j2的文档:

  

Log4j具有在此期间自动配置的能力   初始化。当Log4j启动时,它会找到所有的   ConfigurationFactory插件并按加权顺序排列   从最高到最低。交付时,Log4j包含四个   ConfigurationFactory实现:一个用于JSON,一个用于YAML,一个   对于属性,一个用于XML。

     

Log4j将检查“log4j.configurationFile”系统属性,   如果设置,将尝试使用加载配置   与文件扩展名匹配的ConfigurationFactory。

     
      
  1. 如果未设置系统属性,则ConfigurationFactory属性将为   在类路径中查找log4j2-test.properties。
  2.   
  3. 如果找不到这样的文件,YAML ConfigurationFactory将在类路径中查找log4j2-test.yaml或log4j2-test.yml。
  4.   
  5. 如果找不到这样的文件,JSON ConfigurationFactory将在类路径中查找log4j2-test.json或log4j2-test.jsn。
  6.   
  7. 如果找不到这样的文件,XML ConfigurationFactory将在类路径中查找log4j2-test.xml。
  8.   
  9. 如果找不到测试文件,ConfigurationFactory属性将在类路径上查找log4j2.properties。
  10.   
  11. 如果无法找到属性文件,YAML ConfigurationFactory将在类路径中查找log4j2.yaml或log4j2.yml。
  12.   
  13. 如果找不到YAML文件,JSON ConfigurationFactory将在类路径中查找log4j2.json或log4j2.jsn。
  14.   
  15. 如果找不到JSON文件,XML ConfigurationFactory将尝试在类路径上找到log4j2.xml。
  16.   
  17. 如果找不到配置文件,将使用DefaultConfiguration。这将导致日志记录输出进入控制台。
  18.   

您可以在此处找到有关log4j2配置的所有文档:https://logging.apache.org/log4j/2.x/manual/configuration.html

感谢D.B.指出了正确答案。