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; } }