001/*
002 * Copyright (c) 2013 Nu Echo Inc. All rights reserved.
003 */
004
005package com.nuecho.rivr.core.util.logging;
006
007import static org.slf4j.helpers.MessageFormatter.*;
008
009import org.slf4j.*;
010
011/**
012 * {@link Logger} adding a prefix to each message.
013 * 
014 * @author Nu Echo Inc.
015 */
016public class PrefixedLogger extends LoggerAdapter {
017
018    private final String mPrefix;
019    private final Logger mLogger;
020
021    public PrefixedLogger(String prefix, Logger logger) {
022        mPrefix = prefix;
023        mLogger = logger;
024    }
025
026    @Override
027    public String getName() {
028        return mLogger.getName();
029    }
030
031    @Override
032    public boolean isTraceEnabled() {
033        return mLogger.isTraceEnabled();
034    }
035
036    @Override
037    public boolean isTraceEnabled(Marker marker) {
038        return mLogger.isTraceEnabled(marker);
039    }
040
041    @Override
042    public boolean isDebugEnabled() {
043        return mLogger.isDebugEnabled();
044    }
045
046    @Override
047    public boolean isDebugEnabled(Marker marker) {
048        return mLogger.isDebugEnabled(marker);
049    }
050
051    @Override
052    public boolean isInfoEnabled() {
053        return mLogger.isInfoEnabled();
054    }
055
056    @Override
057    public boolean isInfoEnabled(Marker marker) {
058        return mLogger.isInfoEnabled(marker);
059    }
060
061    @Override
062    public boolean isWarnEnabled() {
063        return mLogger.isWarnEnabled();
064    }
065
066    @Override
067    public boolean isWarnEnabled(Marker marker) {
068        return mLogger.isWarnEnabled(marker);
069    }
070
071    @Override
072    public boolean isErrorEnabled() {
073        return mLogger.isErrorEnabled();
074    }
075
076    @Override
077    public boolean isErrorEnabled(Marker marker) {
078        return mLogger.isErrorEnabled(marker);
079    }
080
081    @Override
082    protected void log(Marker marker, LogLevel logLevel, String message, Throwable throwable) {
083        LogUtil.dispatch(mLogger, marker, mPrefix + message, logLevel, throwable);
084    }
085
086    @Override
087    protected void logWithFormatting(Marker marker, LogLevel logLevel, String format, Object... arguments) {
088        LogUtil.dispatch(mLogger, marker, mPrefix + arrayFormat(format, arguments).getMessage(), logLevel, null);
089    }
090}