java - log4j 1.x : detect if no config file given and programmatically set it up

标签 java logging log4j default

(如果您使用的是 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/

相关文章:

使用 ETW 跟踪 Windows 用户模式进程系统调用

python - 如何在同一个配置文件中混合日志记录处理程序(文件和定时)和压缩日志?

Java Logger 向控制台生成多个相同的日志

java - Log4j StringMatchFilter 和 denyAll 过滤器属性配置

grails - Grails log4j版本与第三方Java API发生冲突

java - 如何使用 JavaFX 从 TabPane 中获取选定的选项卡?

java - 如何在 Swing 中分析 EDT?

java - 整个程序的记录器打印消息两次,有时甚至打印更多次

java - 按下按钮后 JPanel 不显示更新

java - 如何在框架中显示带有组件的面板