(如果您使用的是 log4j 版本 2,则不适用)
了解如何设置 log4j 以打印调试以及如何以编程方式构造默认 Properties 对象。
需要代码帮助来检测 log4j 是否未在类路径中找到配置文件。
这适用于没有 log4j.xml 至少可以在控制台中查看所有日志的情况。
我的代码:
private static void log4Default() {
boolean noLog = true;
//how to set this to false if log4j did find a config file
// File log4f = new File("log4j.xml");
// File log4f2 = new File("log4j.properties");
//
// if(log4f.exists() || log4f2.exists()) {
// noLog = false;
// }else {
// log4f = new File("target/classes/log4j.xml");
// log4f2 = new File("target/classes/log4j.properties");
// if(log4f.exists() || log4f2.exists()) {
// noLog = false;
// }
// }
// if(noLog) {
// log4f = new File("target/test-classes/log4j.xml");
// log4f2 = new File("target/test-classes/log4j.properties");
// if(log4f.exists() || log4f2.exists()) {
// noLog = false;
// }
// }
if(noLog) {
System.out.println("no log4j config, using default");
Layout layout = new PatternLayout(" %-5p %t %d [%t][%F:%L] : %m%n");
Appender ap = new ConsoleAppender(layout , ConsoleAppender.SYSTEM_OUT);
Logger.getRootLogger().setLevel(Level.ALL);
//Logger.getRootLogger().addAppender(new ConsoleAppender(layout, ConsoleAppender.SYSTEM_ERR));
Logger.getRootLogger().addAppender(ap);
}
}
注释掉该文件存在,因为可能存在越权,并且以上内容不是犯规证明。
最佳答案
您可以使用它来检查类路径中是否存在任何 log4j.xml/.properties
文件:
public void checkForLog4jConfigFile() {
org.apache.log4j.Logger rootLogger = org.apache.log4j.Logger.getRootLogger();
Enumeration appenders = rootLogger.getAllAppenders();
if (!appenders.hasMoreElements()) {
System.out.println("LOG4J config file is missing");
} else {
System.out.println("appender found "
+ ((Appender) appenders.nextElement()).getName());
}
}
关于java - log4j 1.x : detect if no config file given and programmatically set it up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052343/