예제 #1
0
  private synchronized void setLogging() throws IOException {
    int consoleLevel = config.getPropertyAsInt("log.consoleLevel", 0);
    int fileLevel = config.getPropertyAsInt("log.fileLevel", 0);
    Level consoleLogLevel = LogFormatter.getLogLevel(consoleLevel);
    Level fileLogLevel = LogFormatter.getLogLevel(fileLevel);
    Level logLevel =
        consoleLogLevel.intValue() < fileLogLevel.intValue() ? consoleLogLevel : fileLogLevel;
    boolean showThreads = config.getPropertyAsBoolean("log.threads", false);
    String[] packages = config.getPropertyAsArray("log.packages", "se.sics");
    if (packages != null && packages.length > 0) {
      for (int i = 0, n = packages.length; i < n; i++) {
        Logger.getLogger(packages[i]).setLevel(logLevel);
      }
    } else {
      Logger awRoot = Logger.getLogger("se.sics");
      awRoot.setLevel(logLevel);
    }

    formatter.setShowingThreads(showThreads);
    LogFormatter.setConsoleLevel(consoleLogLevel);
    // LogFormatter.setLevelForAllHandlers(logLevel);

    Logger root = Logger.getLogger("");
    if (fileLogLevel != Level.OFF) {
      if (rootFileHandler == null) {
        rootFileHandler = new FileHandler(logFilePrefix + "%g.log", 1000000, 10);
        rootFileHandler.setFormatter(formatter);
        root.addHandler(rootFileHandler);
      }
      rootFileHandler.setLevel(fileLogLevel);
      if (simLogHandler != null) {
        simLogHandler.setLevel(fileLogLevel);
      }
    } else if (rootFileHandler != null) {
      exitSimulationLog();
      root.removeHandler(rootFileHandler);
      rootFileHandler.close();
      rootFileHandler = null;
    }
  }