# HG changeset patch # User František Kučera # Date 1387931007 -3600 # Node ID fd2ac24c6a2266345f6e5da8f932bc57065695aa # Parent a736c391794617ad83062b69fada960b81d31043 logging: configurable level diff -r a736c3917946 -r fd2ac24c6a22 java/sql-dk/src/info/globalcode/sql/dk/logging/LoggerInitializer.java --- a/java/sql-dk/src/info/globalcode/sql/dk/logging/LoggerInitializer.java Wed Dec 25 01:04:03 2013 +0100 +++ b/java/sql-dk/src/info/globalcode/sql/dk/logging/LoggerInitializer.java Wed Dec 25 01:23:27 2013 +0100 @@ -19,6 +19,7 @@ import info.globalcode.sql.dk.Constants; import java.util.logging.ConsoleHandler; +import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.Logger; @@ -30,6 +31,10 @@ */ public class LoggerInitializer { + private static final Logger log = Logger.getLogger(LoggerInitializer.class.getName()); + public static final String LEVEL_PROPERTY = LoggerInitializer.class.getName() + ".level"; + private static final Level DEFAULT_LEVEL = Level.INFO; + public LoggerInitializer() { Logger logger = Logger.getLogger(Constants.JAVA_PACKAGE); ConsoleHandler handler = new ConsoleHandler(); @@ -38,12 +43,34 @@ logger.addHandler(handler); handler.setFormatter(formatter); - handler.setLevel(Level.INFO); - logger.setLevel(Level.INFO); + setLevel(logger, handler); /** * TODO: FileHandler – detailed logs in file in ~/sql-dk/log/… */ } + + private void setLevel(Logger logger, Handler handler) { + boolean levelParseError = false; + Level level; + String cliLevel = System.getProperty(LEVEL_PROPERTY); + if (cliLevel == null) { + level = DEFAULT_LEVEL; + } else { + try { + level = Level.parse(cliLevel); + } catch (IllegalArgumentException e) { + level = DEFAULT_LEVEL; + levelParseError = true; + } + } + + handler.setLevel(level); + logger.setLevel(level); + + if (levelParseError) { + log.log(Level.WARNING, "Invalid logging level „{0}“ specified in „{1}“ → using default level „{2}“", new Object[]{cliLevel, LEVEL_PROPERTY, DEFAULT_LEVEL}); + } + } }