【问题标题】:Where is my Log4J level being set?我的 Log4J 级别在哪里设置?
【发布时间】:2015-04-16 17:27:17
【问题描述】:

以下是我的 Log4J 代码:

 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");


  //private static Logger logger = Logger.getLogger(HelloWorldLog4J.class);

    public static void main(String[] args) {

        System.out.println("pre_loggerDOTinfo");
        System.out.println();
        //logger.setLevel(Level.INFO);   //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");

    }


}

这在我运行时有效,并输出以下内容:

pre_loggerDOTinfo

12:21:20.761 [main] FATAL HelloWorld - 你好,这是一个 FATAL 消息 12:21:20.763 [main] FATAL HelloWorld - 你好,这是一个 FATAL 消息也,#2

12:21:20.764 [main] FATAL HelloWorld - 你好,这是一个 FATAL 消息,#3

12:21:20.765 [main] FATAL HelloWorld - 你好,这是一个 FATAL 消息也,#4 11

post_loggerDOTinfo

这很好,但我希望它输出所有的日志消息,而不仅仅是致命的。

所以我尝试的是在与 Java 文件相同的目录中创建一个 log4j.properties 文件。在这里:

log4j.rootLogger=DEBUG,console,file
log4j.appender.console=DEBUG,org.apache.log4j.ConsoleAppender
log4j.appender.file=INFO,org.apache.log4j.RollingFileAppender



log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log4j.log
log4j.appender.FILE.MaxFileSize=512KB
log4j.appender.FILE.MaxBackupIndex=3
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %m%n

但是当我重新运行 HelloWorldLog4J 类时,我得到了完全相同的结果(就好像它在其他地方查找属性文件一样)。

我认为我需要在 HelloWorldLog4J 类中设置 log4j 属性文件?我确实尝试过,使用这条线:

logger.setLevel(Level.INFO); 

但是,这不起作用 - 我收到此错误:

HelloWorldLog4J.java:20: error: cannot find symbol
        logger.setLevel(Level.INFO);   //used to be..
              ^
  symbol:   method setLevel(Level)
  location: variable logger of type Logger
1 error

C:\Users\Adel\JavaCoding>

感谢任何提示

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    也许您正在使用自定义 log4.properties 文件导入任何库,或者您的属性文件在类路径中不可见

    有关如何设置的讨论,请参见此处 https://logging.apache.org/log4j/1.2/manual.html#defaultInit

    您可以尝试在开始上课时设置log4j.configuration 属性。

    -Dlog4j.configuration="PATH_TO_YOUR_FILE"
    

    看看现在有没有收到

    【讨论】:

    • 非常感谢!!我将尝试log4j.configuration 属性,并阅读 log4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2019-11-21
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2011-03-09
    • 2016-08-04
    相关资源
    最近更新 更多