/* * Copyright 2013-2014 Odysseus Software GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.musicmount.util; import java.text.MessageFormat; import java.util.Date; import java.util.Enumeration; import java.util.logging.ConsoleHandler; import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogManager; import java.util.logging.LogRecord; import java.util.logging.Logger; public class LoggingUtil { /** * Setup simple console logging * @param loggerName logger name * @param level log level */ public static void configure(String loggerName, Level level) { ConsoleHandler consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(level); consoleHandler.setFormatter(createFormatter()); Logger logger = Logger.getLogger(loggerName); logger.setLevel(level); for (Handler handler : logger.getHandlers()) { if (handler instanceof ConsoleHandler) { logger.removeHandler(handler); } } logger.addHandler(consoleHandler); logger.setUseParentHandlers(false); } public static void updateConsoleHandlers() { Enumeration<String> loggerNames = LogManager.getLogManager().getLoggerNames(); while (loggerNames.hasMoreElements()) { Logger logger = Logger.getLogger(loggerNames.nextElement()); for (Handler handler : logger.getHandlers()) { if (handler instanceof ConsoleHandler) { ConsoleHandler oldHandler = (ConsoleHandler)handler; ConsoleHandler newHandler = new ConsoleHandler(); newHandler.setLevel(oldHandler.getLevel()); newHandler.setFormatter(oldHandler.getFormatter()); logger.removeHandler(oldHandler); logger.addHandler(newHandler); } } } } static Formatter createFormatter() { return new Formatter() { final MessageFormat messageFormat = new MessageFormat("{0}{1,date,HH:mm:ss} {2} - {3}{4}\n"); @Override public synchronized String format(LogRecord record) { Object[] arguments = new Object[] { String.format("%-8s", record.getLevel()), new Date(record.getMillis()), record.getLoggerName() == null ? "<Unknown Logger>" : record.getLoggerName().substring(record.getLoggerName().lastIndexOf('.') + 1), record.getMessage() == null ? "<No Message>" : record.getMessage(), record.getThrown() == null ? "" : ", " + record.getThrown() }; return messageFormat.format(arguments); } }; } }