franta-hg@16: /** franta-hg@16: * copy-image-resizer franta-hg@16: * Copyright © 2013 František Kučera (frantovo.cz) franta-hg@16: * franta-hg@16: * This program is free software: you can redistribute it and/or modify franta-hg@16: * it under the terms of the GNU General Public License as published by franta-hg@16: * the Free Software Foundation, either version 3 of the License, or franta-hg@16: * (at your option) any later version. franta-hg@16: * franta-hg@16: * This program is distributed in the hope that it will be useful, franta-hg@16: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@16: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@16: * GNU General Public License for more details. franta-hg@16: * franta-hg@16: * You should have received a copy of the GNU General Public License franta-hg@16: * along with this program. If not, see . franta-hg@16: */ franta-hg@16: package cz.frantovo.copyImageResizer.logging; franta-hg@16: franta-hg@16: import cz.frantovo.copyImageResizer.Constants; franta-hg@16: import java.util.logging.ConsoleHandler; franta-hg@16: import java.util.logging.Handler; franta-hg@16: import java.util.logging.Level; franta-hg@16: import java.util.logging.Logger; franta-hg@16: franta-hg@16: /** franta-hg@16: * franta-hg@16: * @author Ing. František Kučera (frantovo.cz) franta-hg@16: */ franta-hg@16: public abstract class AbstractInitializer { franta-hg@16: franta-hg@16: private static final Logger log = Logger.getLogger(AbstractInitializer.class.getName()); franta-hg@16: franta-hg@16: public static final String LEVEL_PROPERTY = AbstractInitializer.class.getName() + ".level"; franta-hg@16: protected static final Level DEFAULT_LEVEL = Level.INFO; franta-hg@16: franta-hg@16: protected abstract AbstractFormatter createFormatter(); franta-hg@16: franta-hg@16: public AbstractInitializer() { franta-hg@16: Logger logger = Logger.getLogger(Constants.JAVA_PACKAGE); franta-hg@16: ConsoleHandler handler = new ConsoleHandler(); franta-hg@16: AbstractFormatter formatter = createFormatter(); franta-hg@16: franta-hg@16: logger.addHandler(handler); franta-hg@16: handler.setFormatter(formatter); franta-hg@16: franta-hg@16: setLevel(logger, handler, formatter); franta-hg@16: franta-hg@16: /** franta-hg@16: * TODO: optional FileHandler – detailed logs in file in ~/sql-dk/log/… franta-hg@16: */ franta-hg@16: } franta-hg@16: franta-hg@16: protected void setLevel(Logger logger, Handler handler, AbstractFormatter formatter) { franta-hg@16: boolean levelParseError = false; franta-hg@16: Level level; franta-hg@16: String cliLevel = System.getProperty(LEVEL_PROPERTY); franta-hg@16: if (cliLevel == null) { franta-hg@16: level = DEFAULT_LEVEL; franta-hg@16: } else { franta-hg@16: try { franta-hg@16: level = Level.parse(cliLevel); franta-hg@16: } catch (IllegalArgumentException e) { franta-hg@16: level = DEFAULT_LEVEL; franta-hg@16: levelParseError = true; franta-hg@16: } franta-hg@16: } franta-hg@16: handler.setLevel(level); franta-hg@16: logger.setLevel(level); franta-hg@16: if (levelParseError) { franta-hg@16: log.log(Level.WARNING, "Invalid logging level \u201e{0}\u201c specified in \u201e{1}\u201c \u2192 using default level \u201e{2}\u201c", new Object[]{cliLevel, LEVEL_PROPERTY, DEFAULT_LEVEL}); franta-hg@16: } franta-hg@16: formatter.setPrintStacktrace(level.intValue() < Level.INFO.intValue()); franta-hg@16: } franta-hg@16: franta-hg@16: }