package info.freelibrary.util; import org.slf4j.Marker; /** * Creates a SLF4J logger that is backed by a {@link java.util.ResourceBundle}. * * @author <a href="mailto:ksclarke@gmail.com">Kevin S. Clarke</a> */ public class Logger extends I18nObject implements org.slf4j.Logger { private final org.slf4j.Logger myLogger; /** * Creates a logger using the supplied class as the name. * * @param aClass A class to use as the name of the logger */ Logger(final org.slf4j.Logger aLogger) { super(); myLogger = aLogger; } /** * Creates a logger using the supplied class as the name. * * @param aClass A class to use as the name of the logger */ Logger(final org.slf4j.Logger aLogger, final String aBundleName) { super(aBundleName); myLogger = aLogger; } @Override public void debug(final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.debug(getI18n(aMessage)); } else { myLogger.debug(aMessage); } } @Override public void debug(final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.debug(getI18n(aMessage), aDetail); } else { myLogger.debug(aMessage, aDetail); } } @Override public void debug(final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.debug(getI18n(aMessage), aVarargs); } else { myLogger.debug(aMessage, aVarargs); } } @Override public void debug(final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.debug(getI18n(aMessage), aThrowable); } else { myLogger.debug(getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.debug(aMessage, aThrowable); } else { myLogger.debug(aMessage); } } } @Override public void debug(final Marker aMarker, final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.debug(aMarker, getI18n(aMessage)); } else { myLogger.debug(aMarker, aMessage); } } @Override public void debug(final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.debug(getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.debug(aMessage, a1stDetail, a2ndDetail); } } @Override public void debug(final Marker aMarker, final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.debug(aMarker, getI18n(aMessage), aDetail); } else { myLogger.debug(aMarker, aMessage, aDetail); } } @Override public void debug(final Marker aMarker, final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.debug(aMarker, getI18n(aMessage), aVarargs); } else { myLogger.debug(aMarker, aMessage, aVarargs); } } @Override public void debug(final Marker aMarker, final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.debug(aMarker, getI18n(aMessage), aThrowable); } else { myLogger.debug(aMarker, getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.debug(aMarker, aMessage, aThrowable); } else { myLogger.debug(aMarker, aMessage); } } } @Override public void debug(final Marker aMarker, final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.debug(aMarker, getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.debug(aMarker, aMessage, a1stDetail, a2ndDetail); } } @Override public void error(final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.error(getI18n(aMessage)); } else { myLogger.error(aMessage); } } @Override public void error(final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.error(getI18n(aMessage), aDetail); } else { myLogger.error(aMessage, aDetail); } } @Override public void error(final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.error(getI18n(aMessage), aVarargs); } else { myLogger.error(aMessage, aVarargs); } } @Override public void error(final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.error(getI18n(aMessage), aThrowable); } else { myLogger.error(getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.error(aMessage, aThrowable); } else { myLogger.error(aMessage); } } } /** * A convenience method that uses an argument pattern with Throwable first. * * @param aThrowable A throwable exception * @param aMessage A message with information about the exception */ public void error(final Throwable aThrowable, final String aMessage) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.error(getI18n(aMessage), aThrowable); } else { myLogger.error(getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.error(aMessage, aThrowable); } else { myLogger.error(aMessage); } } } /** * A convenience method that uses an argument pattern with Throwable first. * * @param aThrowable A throwable exception * @param aMessage A message with information about the exception * @param aVarargs Additional details about the exception being thrown */ public void error(final Throwable aThrowable, final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.error(getI18n(aMessage, aVarargs), aThrowable); } else { myLogger.error(getI18n(aMessage, aVarargs)); } } else { if (aThrowable != null) { myLogger.error(aMessage, aThrowable); } else { myLogger.error(aMessage); } } } @Override public void error(final Marker aMarker, final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.error(aMarker, getI18n(aMessage)); } else { myLogger.error(aMarker, aMessage); } } @Override public void error(final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.error(getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.error(aMessage, a1stDetail, a2ndDetail); } } @Override public void error(final Marker aMarker, final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.error(aMarker, getI18n(aMessage), aDetail); } else { myLogger.error(aMarker, aMessage, aDetail); } } @Override public void error(final Marker aMarker, final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.error(aMarker, getI18n(aMessage), aVarargs); } else { myLogger.error(aMarker, aMessage, aVarargs); } } @Override public void error(final Marker aMarker, final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.error(aMarker, getI18n(aMessage), aThrowable); } else { myLogger.error(aMarker, getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.error(aMarker, aMessage, aThrowable); } else { myLogger.error(aMarker, aMessage); } } } @Override public void error(final Marker aMarker, final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.error(aMarker, getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.error(aMarker, aMessage, a1stDetail, a2ndDetail); } } @Override public String getName() { return myLogger.getName(); } @Override public void info(final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.info(getI18n(aMessage)); } else { myLogger.info(aMessage); } } @Override public void info(final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.info(getI18n(aMessage), aDetail); } else { myLogger.info(aMessage, aDetail); } } @Override public void info(final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.info(getI18n(aMessage), aVarargs); } else { myLogger.info(aMessage, aVarargs); } } @Override public void info(final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.info(getI18n(aMessage), aThrowable); } else { myLogger.info(getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.info(aMessage, aThrowable); } else { myLogger.info(aMessage); } } } @Override public void info(final Marker aMarker, final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.info(aMarker, getI18n(aMessage)); } else { myLogger.info(aMarker, aMessage); } } @Override public void info(final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.info(getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.info(aMessage, a1stDetail, a2ndDetail); } } @Override public void info(final Marker aMarker, final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.info(aMarker, getI18n(aMessage), aDetail); } else { myLogger.info(aMarker, aMessage, aDetail); } } @Override public void info(final Marker aMarker, final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.info(aMarker, getI18n(aMessage), aVarargs); } else { myLogger.info(aMarker, aMessage, aVarargs); } } @Override public void info(final Marker aMarker, final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.info(aMarker, getI18n(aMessage), aThrowable); } else { myLogger.info(aMarker, getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.info(aMarker, aMessage, aThrowable); } else { myLogger.info(aMarker, aMessage); } } } @Override public void info(final Marker aMarker, final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.info(aMarker, getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.info(aMarker, aMessage, a1stDetail, a2ndDetail); } } @Override public boolean isDebugEnabled() { return myLogger.isDebugEnabled(); } @Override public boolean isDebugEnabled(final Marker aMarker) { return myLogger.isDebugEnabled(aMarker); } @Override public boolean isErrorEnabled() { return myLogger.isErrorEnabled(); } @Override public boolean isErrorEnabled(final Marker aMarker) { return myLogger.isErrorEnabled(aMarker); } @Override public boolean isInfoEnabled() { return myLogger.isInfoEnabled(); } @Override public boolean isInfoEnabled(final Marker aMarker) { return myLogger.isInfoEnabled(aMarker); } @Override public boolean isTraceEnabled() { return myLogger.isTraceEnabled(); } @Override public boolean isTraceEnabled(final Marker aMarker) { return myLogger.isTraceEnabled(aMarker); } @Override public boolean isWarnEnabled() { return myLogger.isWarnEnabled(); } @Override public boolean isWarnEnabled(final Marker aMarker) { return myLogger.isWarnEnabled(aMarker); } @Override public void trace(final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.trace(getI18n(aMessage)); } else { myLogger.trace(aMessage); } } @Override public void trace(final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.trace(getI18n(aMessage), aDetail); } else { myLogger.trace(aMessage, aDetail); } } @Override public void trace(final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.trace(getI18n(aMessage), aVarargs); } else { myLogger.trace(aMessage, aVarargs); } } @Override public void trace(final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.trace(getI18n(aMessage), aThrowable); } else { myLogger.trace(getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.trace(aMessage, aThrowable); } else { myLogger.trace(aMessage); } } } @Override public void trace(final Marker aMarker, final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.trace(aMarker, getI18n(aMessage)); } else { myLogger.trace(aMarker, aMessage); } } @Override public void trace(final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.trace(getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.trace(aMessage, a1stDetail, a2ndDetail); } } @Override public void trace(final Marker aMarker, final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.trace(aMarker, getI18n(aMessage), aDetail); } else { myLogger.trace(aMarker, aMessage, aDetail); } } @Override public void trace(final Marker aMarker, final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.trace(aMarker, getI18n(aMessage), aVarargs); } else { myLogger.trace(aMarker, aMessage, aVarargs); } } @Override public void trace(final Marker aMarker, final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.trace(aMarker, getI18n(aMessage), aThrowable); } else { myLogger.trace(aMarker, getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.trace(aMarker, aMessage, aThrowable); } else { myLogger.trace(aMarker, aMessage); } } } @Override public void trace(final Marker aMarker, final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.trace(aMarker, getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.trace(aMarker, aMessage, a1stDetail, a2ndDetail); } } @Override public void warn(final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.warn(getI18n(aMessage)); } else { myLogger.warn(aMessage); } } @Override public void warn(final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.warn(getI18n(aMessage), aDetail); } else { myLogger.warn(aMessage, aDetail); } } @Override public void warn(final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.warn(getI18n(aMessage), aVarargs); } else { myLogger.warn(aMessage, aVarargs); } } @Override public void warn(final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.warn(getI18n(aMessage), aThrowable); } else { myLogger.warn(getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.warn(aMessage, aThrowable); } else { myLogger.warn(aMessage); } } } @Override public void warn(final Marker aMarker, final String aMessage) { if (hasI18nKey(aMessage)) { myLogger.warn(aMarker, getI18n(aMessage)); } else { myLogger.warn(aMarker, aMessage); } } @Override public void warn(final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.warn(getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.warn(aMessage, a1stDetail, a2ndDetail); } } @Override public void warn(final Marker aMarker, final String aMessage, final Object aDetail) { if (hasI18nKey(aMessage)) { myLogger.warn(aMarker, getI18n(aMessage), aDetail); } else { myLogger.warn(aMarker, aMessage, aDetail); } } @Override public void warn(final Marker aMarker, final String aMessage, final Object... aVarargs) { if (hasI18nKey(aMessage)) { myLogger.warn(aMarker, getI18n(aMessage), aVarargs); } else { myLogger.warn(aMarker, aMessage, aVarargs); } } @Override public void warn(final Marker aMarker, final String aMessage, final Throwable aThrowable) { if (hasI18nKey(aMessage)) { if (aThrowable != null) { myLogger.warn(aMarker, getI18n(aMessage), aThrowable); } else { myLogger.warn(aMarker, getI18n(aMessage)); } } else { if (aThrowable != null) { myLogger.warn(aMarker, aMessage, aThrowable); } else { myLogger.warn(aMarker, aMessage); } } } @Override public void warn(final Marker aMarker, final String aMessage, final Object a1stDetail, final Object a2ndDetail) { if (hasI18nKey(aMessage)) { myLogger.warn(aMarker, getI18n(aMessage), a1stDetail, a2ndDetail); } else { myLogger.warn(aMarker, aMessage, a1stDetail, a2ndDetail); } } /** * Gets a message from the logger's backing resource bundle if what's passed in is a message key; if it's not then * what's passed in is, itself, returned. If what's passed in is the same thing as what's returned, any additional * details passed in are ignored. * * @param aMessage A message to check against the backing resource bundle * @param aObjArray An array of additional details * @return A message value (potentially from the backing resource bundle) */ public String getMessage(final String aMessage, final Object... aObjArray) { if (hasI18nKey(aMessage)) { return getI18n(aMessage, aObjArray); } else { return aMessage; } } /** * Gets the internal logger that this logger decorates. This allows casting it to the actual logging * implementation so that native methods, etc., can be called. * * @return An underlying logger */ public org.slf4j.Logger getLoggerImpl() { return myLogger; } }