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