com.granita.contacticloudsync.log.CustomLogger.java Source code

Java tutorial

Introduction

Here is the source code for com.granita.contacticloudsync.log.CustomLogger.java

Source

/*
 * 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();
    }
}