17ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu/**
27ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu * Copyright (c) 2004-2011 QOS.ch
388c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * All rights reserved.
47ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu *
588c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * Permission is hereby granted, free  of charge, to any person obtaining
688c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * a  copy  of this  software  and  associated  documentation files  (the
788c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * "Software"), to  deal in  the Software without  restriction, including
888c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * without limitation  the rights to  use, copy, modify,  merge, publish,
988c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * distribute,  sublicense, and/or sell  copies of  the Software,  and to
1088c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * permit persons to whom the Software  is furnished to do so, subject to
1188c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * the following conditions:
127ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu *
1388c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * The  above  copyright  notice  and  this permission  notice  shall  be
1488c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * included in all copies or substantial portions of the Software.
157ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu *
1688c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
1788c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
1888c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
1988c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
2088c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
2188c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
2288c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
237ba0605dc97fb81bde8311510d27b3ccba170008Ceki Gulcu *
2488c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu */
2588c4c456766193e012eb890e2208473d99b91f83Ceki Gulcupackage org.slf4j.impl;
2688c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu
2788c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport java.io.Serializable;
2888c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu
2988c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport org.apache.log4j.Level;
3088c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport org.slf4j.Logger;
3188c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport org.slf4j.Marker;
323c0ab3466b6fa6e915974c72558d64c570734700Ceki Gulcuimport org.slf4j.helpers.FormattingTuple;
3388c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport org.slf4j.helpers.MarkerIgnoringBase;
3488c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport org.slf4j.helpers.MessageFormatter;
3588c4c456766193e012eb890e2208473d99b91f83Ceki Gulcuimport org.slf4j.spi.LocationAwareLogger;
3688c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu
3788c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu/**
3888c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * A wrapper over {@link org.apache.log4j.Logger org.apache.log4j.Logger} in
396dd2bd58cffc857d064d0e0ac3017d6aee924bb8Ceki Gulcu * conforming to the {@link Logger} interface.
4088c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu *
416dd2bd58cffc857d064d0e0ac3017d6aee924bb8Ceki Gulcu * <p>
429f10490a05f7344f4b3ef657e8991f5d51934e2fCeki Gulcu * Note that the logging levels mentioned in this class refer to those defined
436dd2bd58cffc857d064d0e0ac3017d6aee924bb8Ceki Gulcu * in the <a
449f10490a05f7344f4b3ef657e8991f5d51934e2fCeki Gulcu * href="http://logging.apache.org/log4j/docs/api/org/apache/log4j/Level.html">
456dd2bd58cffc857d064d0e0ac3017d6aee924bb8Ceki Gulcu * <code>org.apache.log4j.Level</code></a> class.
4688c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu *
4788c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * <p>
4888c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * The TRACE level was introduced in log4j version 1.2.12. In order to avoid
4988c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * crashing the host application, in the case the log4j version in use predates
5088c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * 1.2.12, the TRACE level will be mapped as DEBUG. See also <a
5188c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * href="http://bugzilla.slf4j.org/show_bug.cgi?id=68">bug 68</a>.
5288c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu *
5388c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu * @author Ceki G&uuml;lc&uuml;
5488c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu */
5531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcupublic final class Log4jLoggerAdapter extends MarkerIgnoringBase implements LocationAwareLogger, Serializable {
5631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
5731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    private static final long serialVersionUID = 6182834493563598289L;
5831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
5931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    final transient org.apache.log4j.Logger logger;
6031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
6131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
6231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Following the pattern discussed in pages 162 through 168 of "The complete
6331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * log4j manual".
6431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
6531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    final static String FQCN = Log4jLoggerAdapter.class.getName();
6631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
6731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    // Does the log4j version in use recognize the TRACE level?
6831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    // The trace level was introduced in log4j 1.2.12.
6931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    final boolean traceCapable;
7031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
7131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    // WARN: Log4jLoggerAdapter constructor should have only package access so
7231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    // that
7331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    // only Log4jLoggerFactory be able to create one.
7431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    Log4jLoggerAdapter(org.apache.log4j.Logger logger) {
7531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        this.logger = logger;
7631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        this.name = logger.getName();
7731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        traceCapable = isTraceCapable();
7831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
7931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
8031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    private boolean isTraceCapable() {
8131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        try {
8231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.isTraceEnabled();
8331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            return true;
8431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        } catch (NoSuchMethodError e) {
8531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            return false;
8631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
8731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
8831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
8931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
9031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Is this logger instance enabled for the TRACE level?
9131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
9231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @return True if this Logger is enabled for level TRACE, false otherwise.
9331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
9431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public boolean isTraceEnabled() {
9531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (traceCapable) {
9631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            return logger.isTraceEnabled();
9731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        } else {
9831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            return logger.isDebugEnabled();
9931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
10031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
10131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
10231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
10331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message object at level TRACE.
10431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
10531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
10631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          - the message object to be logged
10731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
10831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void trace(String msg) {
10931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, msg, null);
11031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
11131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
11231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
11331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level TRACE according to the specified format and
11431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * argument.
11531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
11631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
11731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
11831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for level TRACE.
11931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
12031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
12131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
12231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
12331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg
12431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the argument
12531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
12631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void trace(String format, Object arg) {
12731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (isTraceEnabled()) {
12831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg);
12931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, ft.getMessage(), ft.getThrowable());
13031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
13131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
13231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
13331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
13431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level TRACE according to the specified format and
13531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
13631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
13731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
13831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
13931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the TRACE level.
14031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
14131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
14231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
14331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
14431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg1
14531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the first argument
14631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg2
14731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the second argument
14831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
14931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void trace(String format, Object arg1, Object arg2) {
15031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (isTraceEnabled()) {
15131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
15231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, ft.getMessage(), ft.getThrowable());
15331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
15431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
15531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
15631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
15731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level TRACE according to the specified format and
15831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
15931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
16031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
16131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
16231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the TRACE level.
16331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
16431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
16531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
16631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
16731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arguments
16831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          an array of arguments
16931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
17031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void trace(String format, Object... arguments) {
17131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (isTraceEnabled()) {
17231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.arrayFormat(format, arguments);
17331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, ft.getMessage(), ft.getThrowable());
17431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
17531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
17631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
17731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
17831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log an exception (throwable) at level TRACE with an accompanying message.
17931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
18031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
18131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the message accompanying the exception
18231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param t
18331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the exception (throwable) to log
18431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
18531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void trace(String msg, Throwable t) {
18631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, traceCapable ? Level.TRACE : Level.DEBUG, msg, t);
18731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
18831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
18931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
19031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Is this logger instance enabled for the DEBUG level?
19131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
19231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @return True if this Logger is enabled for level DEBUG, false otherwise.
19331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
19431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public boolean isDebugEnabled() {
19531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        return logger.isDebugEnabled();
19631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
19731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
19831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
19931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message object at level DEBUG.
20031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
20131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
20231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          - the message object to be logged
20331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
20431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void debug(String msg) {
20531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.DEBUG, msg, null);
20631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
20731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
20831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
20931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level DEBUG according to the specified format and
21031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * argument.
21131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
21231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
21331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
21431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for level DEBUG.
21531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
21631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
21731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
21831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
21931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg
22031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the argument
22131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
22231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void debug(String format, Object arg) {
22331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isDebugEnabled()) {
22431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg);
22531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
22631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
22731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
22831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
22931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
23031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level DEBUG according to the specified format and
23131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
23231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
23331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
23431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
23531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the DEBUG level.
23631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
23731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
23831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
23931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
24031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg1
24131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the first argument
24231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg2
24331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the second argument
24431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
24531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void debug(String format, Object arg1, Object arg2) {
24631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isDebugEnabled()) {
24731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
24831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
24931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
25031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
25131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
25231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
25331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level DEBUG according to the specified format and
25431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
25531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
25631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
25731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
25831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the DEBUG level.
25931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
26031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
26131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
26231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
26331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arguments an array of arguments
26431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
26531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void debug(String format, Object... arguments) {
26631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isDebugEnabled()) {
26731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.arrayFormat(format, arguments);
26831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable());
26931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
27031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
27131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
27231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
27331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log an exception (throwable) at level DEBUG with an accompanying message.
27431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
27531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
27631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the message accompanying the exception
27731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param t
27831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the exception (throwable) to log
27931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
28031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void debug(String msg, Throwable t) {
28131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.DEBUG, msg, t);
28231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
28331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
28431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
28531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Is this logger instance enabled for the INFO level?
28631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
28731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @return True if this Logger is enabled for the INFO level, false otherwise.
28831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
28931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public boolean isInfoEnabled() {
29031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        return logger.isInfoEnabled();
29131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
29231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
29331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
29431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message object at the INFO level.
29531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
29631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
29731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          - the message object to be logged
29831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
29931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void info(String msg) {
30031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.INFO, msg, null);
30131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
30231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
30331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
30431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level INFO according to the specified format and argument.
30531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
30631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
30731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
30831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the INFO level.
30931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
31031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
31131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
31231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
31331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg
31431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the argument
31531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
31631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void info(String format, Object arg) {
31731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isInfoEnabled()) {
31831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg);
31931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
32031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
32131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
32231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
32331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
32431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at the INFO level according to the specified format and
32531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
32631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
32731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
32831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
32931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the INFO level.
33031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
33131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
33231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
33331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
33431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg1
33531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the first argument
33631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg2
33731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the second argument
33831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
33931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void info(String format, Object arg1, Object arg2) {
34031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isInfoEnabled()) {
34131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
34231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
34331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
34431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
34531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
34631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
34731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level INFO according to the specified format and
34831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
34931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
35031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
35131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
35231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the INFO level.
35331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
35431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
35531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
35631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
35731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param argArray
35831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          an array of arguments
35931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
36031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void info(String format, Object... argArray) {
36131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isInfoEnabled()) {
36231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
36331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.INFO, ft.getMessage(), ft.getThrowable());
36431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
36531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
36631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
36731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
36831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log an exception (throwable) at the INFO level with an accompanying
36931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * message.
37031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
37131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
37231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the message accompanying the exception
37331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param t
37431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the exception (throwable) to log
37531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
37631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void info(String msg, Throwable t) {
37731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.INFO, msg, t);
37831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
37931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
38031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
38131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Is this logger instance enabled for the WARN level?
38231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
38331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @return True if this Logger is enabled for the WARN level, false otherwise.
38431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
38531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public boolean isWarnEnabled() {
38631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        return logger.isEnabledFor(Level.WARN);
38731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
38831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
38931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
39031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message object at the WARN level.
39131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
39231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
39331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          - the message object to be logged
39431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
39531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void warn(String msg) {
39631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.WARN, msg, null);
39731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
39831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
39931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
40031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at the WARN level according to the specified format and
40131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * argument.
40231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
40331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
40431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
40531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the WARN level.
40631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
40731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
40831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
40931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
41031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg
41131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the argument
41231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
41331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void warn(String format, Object arg) {
41431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isEnabledFor(Level.WARN)) {
41531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg);
41631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
41731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
41831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
41931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
42031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
42131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at the WARN level according to the specified format and
42231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
42331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
42431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
42531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
42631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the WARN level.
42731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
42831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
42931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
43031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
43131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg1
43231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the first argument
43331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg2
43431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the second argument
43531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
43631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void warn(String format, Object arg1, Object arg2) {
43731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isEnabledFor(Level.WARN)) {
43831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
43931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
44031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
44131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
44231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
44331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
44431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level WARN according to the specified format and
44531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
44631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
44731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
44831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
44931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the WARN level.
45031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
45131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
45231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
45331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
45431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param argArray
45531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          an array of arguments
45631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
45731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void warn(String format, Object... argArray) {
45831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isEnabledFor(Level.WARN)) {
45931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
46031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.WARN, ft.getMessage(), ft.getThrowable());
46131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
46231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
46331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
46431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
46531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log an exception (throwable) at the WARN level with an accompanying
46631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * message.
46731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
46831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
46931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the message accompanying the exception
47031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param t
47131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the exception (throwable) to log
47231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
47331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void warn(String msg, Throwable t) {
47431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.WARN, msg, t);
47531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
47631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
47731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
47831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Is this logger instance enabled for level ERROR?
47931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
48031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @return True if this Logger is enabled for level ERROR, false otherwise.
48131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
48231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public boolean isErrorEnabled() {
48331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        return logger.isEnabledFor(Level.ERROR);
48431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
48531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
48631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
48731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message object at the ERROR level.
48831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
48931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
49031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          - the message object to be logged
49131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
49231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void error(String msg) {
49331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.ERROR, msg, null);
49431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
49531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
49631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
49731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at the ERROR level according to the specified format and
49831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * argument.
49931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
50031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
50131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
50231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the ERROR level.
50331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
50431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
50531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
50631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
50731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg
50831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the argument
50931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
51031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void error(String format, Object arg) {
51131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isEnabledFor(Level.ERROR)) {
51231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg);
51331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
51431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
51531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
51631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
51731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
51831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at the ERROR level according to the specified format and
51931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
52031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
52131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
52231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
52331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the ERROR level.
52431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
52531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
52631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
52731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
52831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg1
52931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the first argument
53031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param arg2
53131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the second argument
53231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
53331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void error(String format, Object arg1, Object arg2) {
53431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isEnabledFor(Level.ERROR)) {
53531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.format(format, arg1, arg2);
53631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
53731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
53831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
53931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
54031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
54131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log a message at level ERROR according to the specified format and
54231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * arguments.
54331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
54431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * <p>
54531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * This form avoids superfluous object creation when the logger is disabled
54631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * for the ERROR level.
54731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * </p>
54831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
54931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param format
55031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the format string
55131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param argArray
55231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          an array of arguments
55331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
55431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void error(String format, Object... argArray) {
55531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        if (logger.isEnabledFor(Level.ERROR)) {
55631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
55731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            logger.log(FQCN, Level.ERROR, ft.getMessage(), ft.getThrowable());
55831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
55931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
56031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
56131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    /**
56231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * Log an exception (throwable) at the ERROR level with an accompanying
56331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * message.
56431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *
56531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param msg
56631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the message accompanying the exception
56731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     * @param t
56831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     *          the exception (throwable) to log
56931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu     */
57031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void error(String msg, Throwable t) {
57131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(FQCN, Level.ERROR, msg, t);
57231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
57331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu
57431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    public void log(Marker marker, String callerFQCN, int level, String msg, Object[] argArray, Throwable t) {
57531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        Level log4jLevel;
57631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        switch (level) {
57731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        case LocationAwareLogger.TRACE_INT:
57831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            log4jLevel = traceCapable ? Level.TRACE : Level.DEBUG;
57931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            break;
58031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        case LocationAwareLogger.DEBUG_INT:
58131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            log4jLevel = Level.DEBUG;
58231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            break;
58331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        case LocationAwareLogger.INFO_INT:
58431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            log4jLevel = Level.INFO;
58531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            break;
58631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        case LocationAwareLogger.WARN_INT:
58731212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            log4jLevel = Level.WARN;
58831212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            break;
58931212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        case LocationAwareLogger.ERROR_INT:
59031212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            log4jLevel = Level.ERROR;
59131212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            break;
59231212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        default:
59331212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu            throw new IllegalStateException("Level number " + level + " is not recognized.");
59431212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        }
59531212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu        logger.log(callerFQCN, log4jLevel, msg, t);
59631212435723e2dfd5d6716d1f6a7b0e66a1e6b38Ceki Gulcu    }
59788c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu
59888c4c456766193e012eb890e2208473d99b91f83Ceki Gulcu}
599