java/sql-dk/src/info/globalcode/sql/dk/logging/LoggerInitializer.java
branchv_0
changeset 58 fd2ac24c6a22
parent 57 a736c3917946
child 59 5f745ae795a8
equal deleted inserted replaced
57:a736c3917946 58:fd2ac24c6a22
    17  */
    17  */
    18 package info.globalcode.sql.dk.logging;
    18 package info.globalcode.sql.dk.logging;
    19 
    19 
    20 import info.globalcode.sql.dk.Constants;
    20 import info.globalcode.sql.dk.Constants;
    21 import java.util.logging.ConsoleHandler;
    21 import java.util.logging.ConsoleHandler;
       
    22 import java.util.logging.Handler;
    22 import java.util.logging.Level;
    23 import java.util.logging.Level;
    23 import java.util.logging.Logger;
    24 import java.util.logging.Logger;
    24 
    25 
    25 /**
    26 /**
    26  * Configures logging subsystem.
    27  * Configures logging subsystem.
    28  *
    29  *
    29  * @author Ing. František Kučera (frantovo.cz)
    30  * @author Ing. František Kučera (frantovo.cz)
    30  */
    31  */
    31 public class LoggerInitializer {
    32 public class LoggerInitializer {
    32 
    33 
       
    34 	private static final Logger log = Logger.getLogger(LoggerInitializer.class.getName());
       
    35 	public static final String LEVEL_PROPERTY = LoggerInitializer.class.getName() + ".level";
       
    36 	private static final Level DEFAULT_LEVEL = Level.INFO;
       
    37 
    33 	public LoggerInitializer() {
    38 	public LoggerInitializer() {
    34 		Logger logger = Logger.getLogger(Constants.JAVA_PACKAGE);
    39 		Logger logger = Logger.getLogger(Constants.JAVA_PACKAGE);
    35 		ConsoleHandler handler = new ConsoleHandler();
    40 		ConsoleHandler handler = new ConsoleHandler();
    36 		ColorfulConsoleFormatter formatter = new ColorfulConsoleFormatter();
    41 		ColorfulConsoleFormatter formatter = new ColorfulConsoleFormatter();
    37 
    42 
    38 		logger.addHandler(handler);
    43 		logger.addHandler(handler);
    39 		handler.setFormatter(formatter);
    44 		handler.setFormatter(formatter);
    40 
    45 
    41 		handler.setLevel(Level.INFO);
    46 		setLevel(logger, handler);
    42 		logger.setLevel(Level.INFO);
       
    43 
    47 
    44 
    48 
    45 		/**
    49 		/**
    46 		 * TODO: FileHandler – detailed logs in file in ~/sql-dk/log/…
    50 		 * TODO: FileHandler – detailed logs in file in ~/sql-dk/log/…
    47 		 */
    51 		 */
    48 	}
    52 	}
       
    53 
       
    54 	private void setLevel(Logger logger, Handler handler) {
       
    55 		boolean levelParseError = false;
       
    56 		Level level;
       
    57 		String cliLevel = System.getProperty(LEVEL_PROPERTY);
       
    58 		if (cliLevel == null) {
       
    59 			level = DEFAULT_LEVEL;
       
    60 		} else {
       
    61 			try {
       
    62 				level = Level.parse(cliLevel);
       
    63 			} catch (IllegalArgumentException e) {
       
    64 				level = DEFAULT_LEVEL;
       
    65 				levelParseError = true;
       
    66 			}
       
    67 		}
       
    68 
       
    69 		handler.setLevel(level);
       
    70 		logger.setLevel(level);
       
    71 
       
    72 		if (levelParseError) {
       
    73 			log.log(Level.WARNING, "Invalid logging level „{0}“ specified in „{1}“ → using default level „{2}“", new Object[]{cliLevel, LEVEL_PROPERTY, DEFAULT_LEVEL});
       
    74 		}
       
    75 	}
    49 }
    76 }