简体   繁体   English

我的Log4J级别设置在哪里?

[英]Where is my Log4J level being set?

The following is my Log4J code : 以下是我的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");

    }


}

This works when I run it, and outputs the following : 当我运行它时此方法有效,并输出以下内容:

pre_loggerDOTinfo pre_loggerDOTinfo

12:21:20.761 [main] FATAL HelloWorld - Hello, this is an FATAL message 12:21:20.763 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #2 12:21:20.761 [main] FATAL HelloWorld-您好,这是一条致命消息12:21:20.763 [main] FATAL HelloWorld-您好,这是一条致命消息还,#2

12:21:20.764 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #3 12:21:20.764 [main] FATAL HelloWorld-您好,这也是致命消息,#3

12:21:20.765 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #4 11 12:21:20.765 [main] FATAL HelloWorld-您好,这也是致命消息,#4 11

post_loggerDOTinfo post_loggerDOTinfo

This is fine , but I want it to output all of the logging messages, not just the FATAL ones. 很好,但是我希望它输出所有日志消息,而不仅仅是致命消息。

So what I tried is to create a log4j.properties file in the same directory as the Java file. 因此,我尝试在与Java文件相同的目录中创建一个log4j.properties文件。 It is here : 是这里 :

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

But when I re-run the HelloWorldLog4J class, I get the same exact thing (as if it's finding a properties file elsewhere ). 但是,当我重新运行HelloWorldLog4J类时,我得到的是相同的东西(就像在其他地方找到属性文件一样)。

I think that I need to set the log4j properties file within my HelloWorldLog4J class? 我认为我需要在HelloWorldLog4J类中设置log4j属性文件吗? I did try this , using the line : 我确实使用行尝试了这一点:

logger.setLevel(Level.INFO); 

However, this doesn't work - and I get this error : 但是,这不起作用-并且出现此错误:

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>

any tips appreciated thanks 任何提示赞赏,谢谢

Maybe you are importing any library with a custom log4.properties file, or your properties file is not visible on the classpath 也许您正在导入带有自定义log4.properties文件的任何库,或者您的属性文件在类路径上不可见

See here for a discussion on how to setup https://logging.apache.org/log4j/1.2/manual.html#defaultInit 请参阅此处以获取有关如何设置https://logging.apache.org/log4j/1.2/manual.html#defaultInit的讨论

You could try to set the log4j.configuration property when starting your class. 您可以在启动类时尝试设置log4j.configuration属性。

-Dlog4j.configuration="PATH_TO_YOUR_FILE"

And see if this is now picked up 看看现在是否捡到了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM