/* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moaspss.logging; import java.util.HashMap; import java.util.Map; /** * A utility class acting as a facade to the logging subsystem. * * Configure the logging defaultHierarchy that the Logger uses by * calling setHierarchy once before calling any of the logging * output functions. * * @author Patrick Peck * @version $Id$ */ public class Logger { /** * Set the default hierarchy to which the Logger should send its * logging output. * * @param hierarchy The logging defaultHierarchy. */ public static void setHierarchy(String hierarchy) { // there is no need for that anymore } /** The Constant instances. */ private static final Map instances = new HashMap<>(); /** * Gets the logger. * * @return the logger */ private static synchronized org.slf4j.Logger getLogger() { final StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); int i; for (i = 2; i < stacktrace.length; i++) { if (!stacktrace[i].getClassName().equals(Logger.class.getName())) { break; } } final String className = stacktrace[i].getClassName(); org.slf4j.Logger logger = instances.get(className); if (logger != null) { return logger; } logger = org.slf4j.LoggerFactory.getLogger(className); instances.put(className, logger); return logger; } /** * Prepare the message for printing it as string. *

* Mainly introduce because the message might be null. * * @param message the message * @return the string */ private static String prepareMessage(Object message) { if (null == message) { return "no message given"; } return message.toString(); } /** * Test, if the trace log level is enabled. * * @return boolean true, if tracing output is enabled * false otherwise. */ public static boolean isTraceEnabled() { final org.slf4j.Logger logger = getLogger(); return logger.isTraceEnabled(); } /** * Test, if the trace log level is enabled for a given hierarchy. * * @param hierarchy requested log hierarchy * @return boolean true, if tracing output is enabled * false otherwise. */ public static boolean isTraceEnabled(String hierarchy) { final org.slf4j.Logger logger = getLogger(); return logger.isTraceEnabled(); } /** * Trace a message. * * @param message The message to trace. */ public static void trace(Object message) { final org.slf4j.Logger logger = getLogger(); logger.trace(prepareMessage(message)); } /** * Test, if the debug log level is enabled. * * @return boolean true, if debug output is enabled * false otherwise. */ public static boolean isDebugEnabled() { final org.slf4j.Logger logger = getLogger(); return logger.isDebugEnabled(); } /** * Test, if the debug log level is enabled for a given hierarchy. * * @param hierarchy requested log hierarchy * @return boolean true, if debug output is enabled * false otherwise. */ public static boolean isDebugEnabled(String hierarchy) { final org.slf4j.Logger logger = getLogger(); return logger.isDebugEnabled(); } /** * Log a debug message. * * @param message The message to log. */ public static void debug(Object message) { final org.slf4j.Logger logger = getLogger(); logger.debug(prepareMessage(message)); } /** * Log an info message. * * @param message The message to log. */ public static void info(Object message) { final org.slf4j.Logger logger = getLogger(); logger.info(prepareMessage(message)); } /** * Log a warning message. * * @param message The message to log. */ public static void warn(Object message) { final org.slf4j.Logger logger = getLogger(); logger.warn(prepareMessage(message)); } /** * Log a warning message. * * @param message The message to log. * @param t An exception that may be the cause of the warning. */ public static void warn(Object message, Throwable t) { final org.slf4j.Logger logger = getLogger(); logger.warn(prepareMessage(message), t); } /** * Log an error message. * * @param message The message to log. */ public static void error(Object message) { final org.slf4j.Logger logger = getLogger(); logger.error(prepareMessage(message)); } /** * Log an error message. * * @param message The message to log. * @param t An exception that may be the cause of the error. */ public static void error(Object message, Throwable t) { final org.slf4j.Logger logger = getLogger(); logger.error(prepareMessage(message), t); } /** * Log a fatal error message. * * @param message The message to log. */ public static void fatal(Object message) { error(message); } /** * Log a fatal error message. * * @param message The message to log. * @param t An exception that may be the cause of the error. */ public static void fatal(Object message, Throwable t) { error(message, t); } }