All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ioc.commons.utils.FormatterLogger Maven / Gradle / Ivy

package org.ioc.commons.utils;

import org.ioc.commons.utils.logs.IFormatterLogger;
import org.ioc.commons.utils.logs.JavaLoggingFormatterLogger;

/**
 * A logger which formats messages by using {@link Format} notation.
 * 
 * When log level is not enabled, parameters are not formatted. It avoids the
 * waste of time because of parsing them.
 * 
 * @author Jesús Lunar Pérez
 */
public class FormatterLogger implements IFormatterLogger {

	public static interface Implementator {
		IFormatterLogger getLogger(Class clazz);
	}

	private static Implementator implementation = JavaLoggingFormatterLogger.implementator();

	protected final IFormatterLogger impl;

	protected FormatterLogger(IFormatterLogger impl) {
		this.impl = impl;
	}

	/**
	 * Get a new instance logger for the class passed as parameter.
	 * 
	 * @param clazz
	 *            Class to log.
	 * @param implementation
	 *            Specific implementation you want to use to get this logger
	 * @return A new instance of a logger
	 */
	public static FormatterLogger getLogger(Class clazz, Implementator implementation) {
		return new FormatterLogger(implementation.getLogger(clazz));
	}

	/**
	 * Get a new instance logger for the class passed as parameter.
	 * Implementation for this logger will be got from {@link #implementation}.
	 * The default implementation is {@link JavaLoggingFormatterLogger}
	 * 
	 * @param clazz
	 *            Class to log.
	 * @return A new instance of a logger
	 */
	public static FormatterLogger getLogger(Class clazz) {
		return new FormatterLogger(getImplementation().getLogger(clazz));
	}

	@Override
	public void log(Level level, String string, Object... params) {
		impl.log(level, string, params);
	}

	@Override
	public void log(Level level, boolean cond, String string, Object... params) {
		impl.log(level, cond, string, params);
	}

	@Override
	public void trace(String string, Object... params) {
		impl.trace(string, params);
	}

	@Override
	public void trace(boolean cond, String string, Object... params) {
		impl.trace(cond, string, params);
	}

	@Override
	public void debug(String string, Object... params) {
		impl.debug(string, params);
	}

	@Override
	public void debug(boolean cond, String string, Object... params) {
		impl.debug(cond, string, params);
	}

	@Override
	public void info(String string, Object... params) {
		impl.info(string, params);
	}

	@Override
	public void info(boolean cond, String string, Object... params) {
		impl.info(cond, string, params);
	}

	@Override
	public void warn(String string, Object... params) {
		impl.warn(string, params);
	}

	@Override
	public void warn(Throwable e, String string, Object... params) {
		impl.warn(e, string, params);
	}

	@Override
	public void warn(boolean cond, String string, Object... params) {
		impl.warn(cond, string, params);
	}

	@Override
	public void warn(boolean cond, Throwable e, String string, Object... params) {
		impl.warn(cond, e, string, params);
	}

	@Override
	public void error(String string, Object... params) {
		impl.error(string, params);
	}

	@Override
	public void error(Throwable e, String string, Object... params) {
		impl.error(e, string, params);
	}

	@Override
	public void error(Throwable e) {
		impl.error(e);
	}

	@Override
	public void entering(String sourceMethod, String msg, Object... params) {
		impl.entering(sourceMethod, msg, params);
	}

	@Override
	public void entering(String sourceMethod) {
		impl.entering(sourceMethod);
	}

	@Override
	public void exiting(String sourceMethod, String msg, Object... result) {
		impl.exiting(sourceMethod, msg, result);
	}

	@Override
	public void exiting(String sourceMethod) {
		impl.exiting(sourceMethod);
	}

	// @Override
	// public void addHandler(Handler handler) {
	// impl.addHandler(handler);
	// }
	//
	@Override
	public boolean isDebugEnabled() {
		return impl.isDebugEnabled();
	}

	@Override
	public boolean isInfoEnabled() {
		return impl.isInfoEnabled();
	}

	@Override
	public boolean isWarnEnabled() {
		return impl.isWarnEnabled();
	}

	@Override
	public boolean isErrorEnabled() {
		return impl.isErrorEnabled();
	}

	@Override
	public void indent() {
		impl.indent();
	}

	@Override
	public void outdent() {
		impl.outdent();
	}

	public static Implementator getImplementation() {
		return implementation;
	}

	public static void setImplementation(Implementator implementation) {
		FormatterLogger.implementation = implementation;
	}

	@Override
	public boolean isTraceEnabled() {
		return impl.isTraceEnabled();
	}

	@Override
	public Level getLevel() {
		return impl.getLevel();
	}

	@Override
	public FormatterLogger getParent() {
		return new FormatterLogger(impl.getParent());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy