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 MapMainly 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() {
		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) {
		org.slf4j.Logger logger = getLogger();
		return logger.isTraceEnabled();
  }
  
  /**
   * Trace a message.
   * 
   * @param message The message to trace.
   */
  public static void trace(Object message) {
		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() {
		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) {
		org.slf4j.Logger logger = getLogger();
		return logger.isDebugEnabled();
  }
  
  /**
   * Log a debug message.
   * 
   * @param message The message to log.
   */
  public static void debug(Object message) {
		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) {
		org.slf4j.Logger logger = getLogger();
		logger.info(prepareMessage(message));
  }
  
  /**
   * Info.
   *
   * @param string the string
   * @param args the objects
   */
  public static void info(String message, Object[] args) {
		org.slf4j.Logger logger = getLogger();
		logger.info(prepareMessage(message), args);
	}
  
  /**
   * Log a warning message.
   * 
   * @param message The message to log.
   */
  public static void warn(Object message) {
		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) {
		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) {
		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) {
		org.slf4j.Logger logger = getLogger();
		logger.error(prepareMessage(message), t);
  }
  
  /**
   * Log an error message with additional information.
   *
   * @param message The message to log.
   * @param variables The values to substitute {} of the logmessage with.
   */
  public static void error(Object message, Object[] variables) {
		org.slf4j.Logger logger = getLogger();
	  logger.error(prepareMessage(message), variables);
  }
  
  /**
   * 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);
  }
}