001/*
002 * Copyright (c) 2013 Nu Echo Inc. All rights reserved.
003 */
004
005package com.nuecho.rivr.core.util.logging;
006
007import java.io.*;
008
009import org.slf4j.*;
010
011/**
012 * Console implementation of a {@link Logger}.
013 * 
014 * @author Nu Echo Inc.
015 */
016public abstract class ConsoleLogger extends LoggerAdapter {
017
018    private final LogLevel mLogLevel;
019
020    public ConsoleLogger(LogLevel logLevel) {
021        mLogLevel = logLevel;
022    }
023
024    @Override
025    public abstract String getName();
026
027    @Override
028    protected void log(Marker marker, LogLevel logLevel, String message, Throwable throwable) {
029        PrintStream printStream = getPrintStream();
030        printStream.println(String.format("[%5s]", logLevel) + " " + message);
031        if (throwable != null) {
032            throwable.printStackTrace(printStream);
033        }
034    }
035
036    protected abstract PrintStream getPrintStream();
037
038    @Override
039    public boolean isTraceEnabled() {
040        return mLogLevel.ordinal() >= LogLevel.TRACE.ordinal();
041    }
042
043    @Override
044    public boolean isTraceEnabled(Marker marker) {
045        return mLogLevel.ordinal() >= LogLevel.TRACE.ordinal();
046    }
047
048    @Override
049    public boolean isDebugEnabled() {
050        return mLogLevel.ordinal() >= LogLevel.DEBUG.ordinal();
051    }
052
053    @Override
054    public boolean isDebugEnabled(Marker marker) {
055        return mLogLevel.ordinal() >= LogLevel.DEBUG.ordinal();
056    }
057
058    @Override
059    public boolean isInfoEnabled() {
060        return mLogLevel.ordinal() >= LogLevel.INFO.ordinal();
061    }
062
063    @Override
064    public boolean isInfoEnabled(Marker marker) {
065        return mLogLevel.ordinal() >= LogLevel.INFO.ordinal();
066    }
067
068    @Override
069    public boolean isWarnEnabled() {
070        return mLogLevel.ordinal() >= LogLevel.WARN.ordinal();
071    }
072
073    @Override
074    public boolean isWarnEnabled(Marker marker) {
075        return mLogLevel.ordinal() >= LogLevel.WARN.ordinal();
076    }
077
078    @Override
079    public boolean isErrorEnabled() {
080        return mLogLevel.ordinal() >= LogLevel.ERROR.ordinal();
081    }
082
083    @Override
084    public boolean isErrorEnabled(Marker marker) {
085        return mLogLevel.ordinal() >= LogLevel.ERROR.ordinal();
086    }
087
088}