我的 Log4J 级别在哪里设置?
Where is my Log4J level being set?
以下是我的 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 - Hello, this is an FATAL
message 12:21:20.763 [main] FATAL HelloWorld - Hello, this is an FATAL
message ALSO, #2
12:21:20.764 [main] FATAL HelloWorld - Hello, this is an FATAL
message ALSO, #3
12:21:20.765 [main] FATAL HelloWorld - Hello, this is an FATAL
message ALSO, #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 class 时,我得到了完全相同的结果(就像它在其他地方找到属性文件一样)。
我认为我需要在我的 HelloWorldLog4J 中设置 log4j 属性文件 class?我确实尝试过,使用以下行:
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>
感谢任何提示谢谢
可能您正在导入带有自定义 log4.properties 文件的任何库,或者您的属性文件在 class 路径
上不可见
有关如何设置的讨论,请参阅此处
https://logging.apache.org/log4j/1.2/manual.html#defaultInit
您可以尝试在启动 class 时设置 log4j.configuration
属性。
-Dlog4j.configuration="PATH_TO_YOUR_FILE"
然后看看这个现在是否被拾起[=13=]
以下是我的 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 - Hello, this is an FATAL message 12:21:20.763 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #2
12:21:20.764 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #3
12:21:20.765 [main] FATAL HelloWorld - Hello, this is an FATAL message ALSO, #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 class 时,我得到了完全相同的结果(就像它在其他地方找到属性文件一样)。
我认为我需要在我的 HelloWorldLog4J 中设置 log4j 属性文件 class?我确实尝试过,使用以下行:
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>
感谢任何提示谢谢
可能您正在导入带有自定义 log4.properties 文件的任何库,或者您的属性文件在 class 路径
上不可见有关如何设置的讨论,请参阅此处 https://logging.apache.org/log4j/1.2/manual.html#defaultInit
您可以尝试在启动 class 时设置 log4j.configuration
属性。
-Dlog4j.configuration="PATH_TO_YOUR_FILE"
然后看看这个现在是否被拾起[=13=]