Java tutorial
/* * Copyright 2013 2015 Ricki Hirner (bitfire web engineering). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html */ package com.granita.contacticloudsync.log; import org.apache.commons.lang3.exception.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.Marker; import java.io.PrintWriter; import lombok.Getter; /** * A logger base class that wraps all calls around some standard log() calls. * @throws UnsupportedOperationException for all methods with Marker * arguments (as Markers are not used by logging). */ public abstract class CustomLogger implements Logger { private static final String PREFIX_ERROR = "[error] ", PREFIX_WARN = "[warn ] ", PREFIX_INFO = "[info ] ", PREFIX_DEBUG = "[debug] ", PREFIX_TRACE = "[trace] "; @Getter protected String name; protected PrintWriter writer; protected boolean verbose; // CUSTOM LOGGING METHODS protected void log(String prefix, String msg) { writer.write(prefix + msg + "\n"); } protected void log(String prefix, String format, Object arg) { writer.write(prefix + format.replace("{}", arg.toString()) + "\n"); } protected void log(String prefix, String format, Object arg1, Object arg2) { writer.write(prefix + format.replaceFirst("\\{\\}", arg1.toString()).replaceFirst("\\{\\}", arg2.toString()) + "\n"); } protected void log(String prefix, String format, Object... args) { String message = prefix; for (Object arg : args) format.replaceFirst("\\{\\}", arg.toString()); writer.write(prefix + format + "\n"); } protected void log(String prefix, String msg, Throwable t) { writer.write(prefix + msg + " - EXCEPTION:\n"); t.printStackTrace(writer); ExceptionUtils.printRootCauseStackTrace(t, writer); } // STANDARD CALLS @Override public boolean isTraceEnabled() { return verbose; } @Override public void trace(String msg) { if (verbose) log(PREFIX_TRACE, msg); } @Override public void trace(String format, Object arg) { if (verbose) log(PREFIX_TRACE, format, arg); } @Override public void trace(String format, Object arg1, Object arg2) { if (verbose) log(PREFIX_TRACE, format, arg1, arg2); } @Override public void trace(String format, Object... arguments) { if (verbose) log(PREFIX_TRACE, format, arguments); } @Override public void trace(String msg, Throwable t) { if (verbose) log(PREFIX_TRACE, msg, t); } @Override public boolean isDebugEnabled() { return true; } @Override public void debug(String msg) { log(PREFIX_DEBUG, msg); } @Override public void debug(String format, Object arg) { log(PREFIX_DEBUG, format, arg); } @Override public void debug(String format, Object arg1, Object arg2) { log(PREFIX_DEBUG, format, arg1, arg2); } @Override public void debug(String format, Object... arguments) { log(PREFIX_DEBUG, format, arguments); } @Override public void debug(String msg, Throwable t) { log(PREFIX_DEBUG, msg, t); } @Override public boolean isInfoEnabled() { return true; } @Override public void info(String msg) { log(PREFIX_INFO, msg); } @Override public void info(String format, Object arg) { log(PREFIX_INFO, format, arg); } @Override public void info(String format, Object arg1, Object arg2) { log(PREFIX_INFO, format, arg1, arg2); } @Override public void info(String format, Object... arguments) { log(PREFIX_INFO, format, arguments); } @Override public void info(String msg, Throwable t) { log(PREFIX_INFO, msg, t); } @Override public boolean isWarnEnabled() { return true; } @Override public void warn(String msg) { log(PREFIX_WARN, msg); } @Override public void warn(String format, Object arg) { log(PREFIX_WARN, format, arg); } @Override public void warn(String format, Object... arguments) { log(PREFIX_WARN, format, arguments); } @Override public void warn(String format, Object arg1, Object arg2) { log(PREFIX_WARN, format, arg1, arg2); } @Override public void warn(String msg, Throwable t) { log(PREFIX_WARN, msg, t); } @Override public boolean isErrorEnabled() { return true; } @Override public void error(String msg) { log(PREFIX_ERROR, msg); } @Override public void error(String format, Object arg) { log(PREFIX_ERROR, format, arg); } @Override public void error(String format, Object arg1, Object arg2) { log(PREFIX_ERROR, format, arg1, arg2); } @Override public void error(String format, Object... arguments) { log(PREFIX_ERROR, format, arguments); } @Override public void error(String msg, Throwable t) { log(PREFIX_ERROR, msg, t); } // CALLS WITH MARKER @Override public boolean isTraceEnabled(Marker marker) { throw new UnsupportedOperationException(); } @Override public void trace(Marker marker, String msg) { throw new UnsupportedOperationException(); } @Override public void trace(Marker marker, String format, Object arg) { throw new UnsupportedOperationException(); } @Override public void trace(Marker marker, String format, Object arg1, Object arg2) { throw new UnsupportedOperationException(); } @Override public void trace(Marker marker, String format, Object... argArray) { throw new UnsupportedOperationException(); } @Override public void trace(Marker marker, String msg, Throwable t) { throw new UnsupportedOperationException(); } @Override public boolean isDebugEnabled(Marker marker) { throw new UnsupportedOperationException(); } @Override public void debug(Marker marker, String msg) { throw new UnsupportedOperationException(); } @Override public void debug(Marker marker, String format, Object arg) { throw new UnsupportedOperationException(); } @Override public void debug(Marker marker, String format, Object arg1, Object arg2) { throw new UnsupportedOperationException(); } @Override public void debug(Marker marker, String format, Object... arguments) { throw new UnsupportedOperationException(); } @Override public void debug(Marker marker, String msg, Throwable t) { throw new UnsupportedOperationException(); } @Override public boolean isInfoEnabled(Marker marker) { throw new UnsupportedOperationException(); } @Override public void info(Marker marker, String msg) { throw new UnsupportedOperationException(); } @Override public void info(Marker marker, String format, Object arg) { throw new UnsupportedOperationException(); } @Override public void info(Marker marker, String format, Object arg1, Object arg2) { throw new UnsupportedOperationException(); } @Override public void info(Marker marker, String format, Object... arguments) { throw new UnsupportedOperationException(); } @Override public void info(Marker marker, String msg, Throwable t) { throw new UnsupportedOperationException(); } @Override public boolean isWarnEnabled(Marker marker) { throw new UnsupportedOperationException(); } @Override public void warn(Marker marker, String msg) { throw new UnsupportedOperationException(); } @Override public void warn(Marker marker, String format, Object arg) { throw new UnsupportedOperationException(); } @Override public void warn(Marker marker, String format, Object arg1, Object arg2) { throw new UnsupportedOperationException(); } @Override public void warn(Marker marker, String format, Object... arguments) { throw new UnsupportedOperationException(); } @Override public void warn(Marker marker, String msg, Throwable t) { throw new UnsupportedOperationException(); } @Override public boolean isErrorEnabled(Marker marker) { throw new UnsupportedOperationException(); } @Override public void error(Marker marker, String msg) { throw new UnsupportedOperationException(); } @Override public void error(Marker marker, String format, Object arg) { throw new UnsupportedOperationException(); } @Override public void error(Marker marker, String format, Object arg1, Object arg2) { throw new UnsupportedOperationException(); } @Override public void error(Marker marker, String format, Object... arguments) { throw new UnsupportedOperationException(); } @Override public void error(Marker marker, String msg, Throwable t) { throw new UnsupportedOperationException(); } }