code: private void configureLogger(Properties properties) {
          //set logback config file
          URL loggerConfigFile = getResource("conf/logback_" + getMode().name().toLowerCase() + ".groovy");
  
          LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
          context.reset();
          context.putObject("properties", properties);
  
          if (loggerConfigFile != null) {
              GafferUtil.runGafferConfiguratorOn(context, this, loggerConfigFile);
          }
  
          URL userLoggerConfigFile = getResource(StringUtils.defaultIfBlank(
                  properties.getProperty("logger.config.file"), "conf/" + DEFAULT_LOGBACK_CONF));
  
          if (userLoggerConfigFile != null) {
              GafferUtil.runGafferConfiguratorOn(context, this, userLoggerConfigFile);
          }
  
          if (ids != null && ids.length > 0) {
  
              String confDir = "conf/log/";
              String[] logConf = DEFAULT_LOGBACK_CONF.split("\\.");
              String logConfPrefix = logConf[0];
              String logConfSuffix = "." + logConf[1];
  
              for (String id : ids) {
                  URL configFile = getResource(confDir + logConfPrefix + "_" + id + logConfSuffix);
                  if (configFile != null)
                      GafferUtil.runGafferConfiguratorOn(context, this, configFile);
              }
          }
  
          //java.util.logging.Logger proxy
          java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger("");
          Handler[] handlers = rootLogger.getHandlers();
          for (Handler handler : handlers) {
              rootLogger.removeHandler(handler);
          }
          SLF4JBridgeHandler.install();
          rootLogger.setLevel(Level.ALL);
  
          String appPackage = properties.getProperty("app.package");
          if (StringUtils.isBlank(appPackage)) {
              logger.warn(Messages.get("warn.app.package.not.config"));
          }
      }
docs: 设置日志器