package com.github.markusbernhardt.proxy.util; /***************************************************************************** * Simple logging support for the framework. You need to add an logging listener * that needs to send the logging events to an backend. * * @author Markus Bernhardt, Copyright 2016 * @author Bernd Rosstauscher, Copyright 2009 ****************************************************************************/ public class Logger { public enum LogLevel { ERROR, WARNING, INFO, TRACE, DEBUG } /***************************************************************************** * Interface for an logging backend that can be attached to the logger. ****************************************************************************/ public interface LogBackEnd { /************************************************************************* * Invoked for every logging event. * * @param clazz * the class that sends the log message. * @param loglevel * the logging level. * @param msg * the message format string. * @param params * the message parameters for the format string. ************************************************************************/ public void log(Class<?> clazz, LogLevel loglevel, String msg, Object... params); /************************************************************************* * Can be used to test if a given logging level is enabled. * * @param logLevel * the loglevel to test. * @return true if enabled, else false. ************************************************************************/ public boolean isLogginEnabled(LogLevel logLevel); } private static LogBackEnd backend; /************************************************************************* * Gets the currently attached logging backend. * * @return Returns the backend. ************************************************************************/ public static LogBackEnd getBackend() { return backend; } /************************************************************************* * Attaches a new logging backend replacing the existing one. * * @param backend * The backend to set. ************************************************************************/ public static void setBackend(LogBackEnd backend) { Logger.backend = backend; } /************************************************************************* * Logs a message. * * @param clazz * the class that sends the log message. * @param loglevel * the logging level. * @param msg * the message format string. * @param params * the message parameters for the format string. ************************************************************************/ public static void log(Class<?> clazz, LogLevel loglevel, String msg, Object... params) { if (backend != null) { backend.log(clazz, loglevel, msg, params); } } /************************************************************************* * Can be used to test if a given logging level is enabled. * * @param logLevel * the loglevel to test. * @return true if enabled, else false. ************************************************************************/ public static boolean isLogginEnabled(LogLevel logLevel) { if (backend != null) { return backend.isLogginEnabled(logLevel); } return false; } }