How do I set log4j level on the command line?

后端 未结 7 948
暖寄归人
暖寄归人 2020-12-24 10:27

I want to add some log.debug statements to a class I\'m working on, and I\'d like to see that in output when running the test. I\'d like to override the log4j properties on

7条回答
  •  清酒与你
    2020-12-24 11:00

    Based on @lijat, here is a simplified implementation. In my spring-based application I simply load this as a bean.

    public static void configureLog4jFromSystemProperties()
    {
      final String LOGGER_PREFIX = "log4j.logger.";
    
      for(String propertyName : System.getProperties().stringPropertyNames())
      {
        if (propertyName.startsWith(LOGGER_PREFIX)) {
          String loggerName = propertyName.substring(LOGGER_PREFIX.length());
          String levelName = System.getProperty(propertyName, "");
          Level level = Level.toLevel(levelName); // defaults to DEBUG
          if (!"".equals(levelName) && !levelName.toUpperCase().equals(level.toString())) {
            logger.error("Skipping unrecognized log4j log level " + levelName + ": -D" + propertyName + "=" + levelName);
            continue;
          }
          logger.info("Setting " + loggerName + " => " + level.toString());
          Logger.getLogger(loggerName).setLevel(level);
        }
      }
    }
    

提交回复
热议问题