All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.log4j.LogMF Maven / Gradle / Ivy

There is a newer version: 6.1.2
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.log4j;

import org.apache.log4j.spi.LoggingEvent;

import java.text.DateFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.Date;
import java.util.ResourceBundle;
import java.util.Locale;

/**
 * This class provides parameterized logging services using the pattern syntax of java.text.MessageFormat. Message
 * formatting is only performed when the request exceeds the threshold level of the logger. When the pattern only
 * contains literal text and default conversion patterns (that is "{0}" and similar) a simple fast compatible formatter
 * is used. If the pattern contains more complex conversion patterns, formatting will be delegated to
 * java.text.MessageFormatter which can be substantially slower.
 *
 * @see org.apache.log4j.LogSF
 * @since 1.2.16
 */
public final class LogMF extends LogXF {
    /**
     * private constructor.
     */
    private LogMF() {
    }

    /**
     * Number format.
     */
    private static NumberFormat numberFormat = null;
    /**
     * Locale at time of last number format request.
     */
    private static Locale numberLocale = null;
    /**
     * Date format.
     */
    private static DateFormat dateFormat = null;
    /**
     * Locale at time of last date format request.
     */
    private static Locale dateLocale = null;

    /**
     * Format number.
     *
     * @param n number to format, may not be null.
     * @return formatted value.
     */
    private static synchronized String formatNumber(final Object n) {
        Locale currentLocale = Locale.getDefault();
        if (currentLocale != numberLocale || numberFormat == null) {
            numberLocale = currentLocale;
            numberFormat = NumberFormat.getInstance(currentLocale);
        }
        return numberFormat.format(n);
    }

    /**
     * Format date.
     *
     * @param d date, may not be null.
     * @return formatted value.
     */
    private static synchronized String formatDate(final Object d) {
        Locale currentLocale = Locale.getDefault();
        if (currentLocale != dateLocale || dateFormat == null) {
            dateLocale = currentLocale;
            dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, currentLocale);
        }
        return dateFormat.format(d);
    }

    /**
     * Format a single parameter like a "{0}" formatting specifier.
     *
     * @param arg0 parameter, may be null.
     * @return string representation of arg0.
     */
    private static String formatObject(final Object arg0) {
        if (arg0 instanceof String) {
            return arg0.toString();
        } else if (arg0 instanceof Double || arg0 instanceof Float) {
            return formatNumber(arg0);
        } else if (arg0 instanceof Date) {
            return formatDate(arg0);
        }
        return String.valueOf(arg0);
    }

    /**
     * Determines if pattern contains only {n} format elements and not apostrophes.
     *
     * @param pattern pattern, may not be null.
     * @return true if pattern only contains {n} format elements.
     */
    private static boolean isSimple(final String pattern) {
        if (pattern.indexOf('\'') != -1) {
            return false;
        }
        for (int pos = pattern.indexOf('{'); pos != -1; pos = pattern.indexOf('{', pos + 1)) {
            if (pos + 2 >= pattern.length() || pattern.charAt(pos + 2) != '}' || pattern.charAt(pos + 1) < '0'
                    || pattern.charAt(pos + 1) > '9') {
                return false;
            }
        }
        return true;

    }

    /**
     * Formats arguments using MessageFormat.
     *
     * @param pattern   pattern, may be malformed or null.
     * @param arguments arguments, may be null or mismatched.
     * @return Message string or null
     */
    private static String format(final String pattern, final Object[] arguments) {
        if (pattern == null) {
            return null;
        } else if (isSimple(pattern)) {
            String formatted[] = new String[10];
            int prev = 0;
            String retval = "";
            int pos = pattern.indexOf('{');
            while (pos >= 0) {
                if (pos + 2 < pattern.length() && pattern.charAt(pos + 2) == '}' && pattern.charAt(pos + 1) >= '0'
                        && pattern.charAt(pos + 1) <= '9') {
                    int index = pattern.charAt(pos + 1) - '0';
                    retval += pattern.substring(prev, pos);
                    if (formatted[index] == null) {
                        if (arguments == null || index >= arguments.length) {
                            formatted[index] = pattern.substring(pos, pos + 3);
                        } else {
                            formatted[index] = formatObject(arguments[index]);
                        }
                    }
                    retval += formatted[index];
                    prev = pos + 3;
                    pos = pattern.indexOf('{', prev);
                } else {
                    pos = pattern.indexOf('{', pos + 1);
                }
            }
            retval += pattern.substring(prev);
            return retval;
        }
        try {
            return MessageFormat.format(pattern, arguments);
        } catch (IllegalArgumentException ex) {
            return pattern;
        }
    }

    /**
     * Formats a single argument using MessageFormat.
     *
     * @param pattern   pattern, may be malformed or null.
     * @param arguments arguments, may be null or mismatched.
     * @return Message string or null
     */
    private static String format(final String pattern, final Object arg0) {
        if (pattern == null) {
            return null;
        } else if (isSimple(pattern)) {
            String formatted = null;
            int prev = 0;
            String retval = "";
            int pos = pattern.indexOf('{');
            while (pos >= 0) {
                if (pos + 2 < pattern.length() && pattern.charAt(pos + 2) == '}' && pattern.charAt(pos + 1) >= '0'
                        && pattern.charAt(pos + 1) <= '9') {
                    int index = pattern.charAt(pos + 1) - '0';
                    retval += pattern.substring(prev, pos);
                    if (index != 0) {
                        retval += pattern.substring(pos, pos + 3);
                    } else {
                        if (formatted == null) {
                            formatted = formatObject(arg0);
                        }
                        retval += formatted;
                    }
                    prev = pos + 3;
                    pos = pattern.indexOf('{', prev);
                } else {
                    pos = pattern.indexOf('{', pos + 1);
                }
            }
            retval += pattern.substring(prev);
            return retval;
        }
        try {
            return MessageFormat.format(pattern, new Object[] { arg0 });
        } catch (IllegalArgumentException ex) {
            return pattern;
        }
    }

    /**
     * Formats arguments using MessageFormat using a pattern from a resource bundle.
     *
     * @param resourceBundleName name of resource bundle, may be null.
     * @param key                key for pattern in resource bundle, may be null.
     * @param arguments          arguments, may be null or mismatched.
     * @return Message string or null
     */
    private static String format(final String resourceBundleName, final String key, final Object[] arguments) {
        String pattern;
        if (resourceBundleName != null) {
            try {
                ResourceBundle bundle = ResourceBundle.getBundle(resourceBundleName);
                pattern = bundle.getString(key);
            } catch (Exception ex) {
                pattern = key;
            }
        } else {
            pattern = key;
        }
        return format(pattern, arguments);
    }

    /**
     * Fully Qualified Class Name of this class.
     */
    private static final String FQCN = LogMF.class.getName();

    /**
     * Equivalent of Logger.forcedLog.
     *
     * @param logger logger, may not be null.
     * @param level  level, may not be null.
     * @param msg    message, may be null.
     */
    private static void forcedLog(final Logger logger, final Level level, final String msg) {
        logger.callAppenders(new LoggingEvent(FQCN, logger, level, msg, null));
    }

    /**
     * Equivalent of Logger.forcedLog.
     *
     * @param logger logger, may not be null.
     * @param level  level, may not be null.
     * @param msg    message, may be null.
     * @param t      throwable.
     */
    private static void forcedLog(final Logger logger, final Level level, final String msg, final Throwable t) {
        logger.callAppenders(new LoggingEvent(FQCN, logger, level, msg, t));
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger    logger, may not be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, arguments));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger    logger, may not be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final Object[] arguments) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, arguments));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger    logger, may not be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final Object[] arguments) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, arguments));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger    logger, may not be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, arguments));
        }
    }

    /**
     * Log a parameterized message at error level.
     *
     * @param logger    logger, may not be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void error(final Logger logger, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(Level.ERROR)) {
            forcedLog(logger, Level.ERROR, format(pattern, arguments));
        }
    }

    /**
     * Log a parameterized message at fatal level.
     *
     * @param logger    logger, may not be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void fatal(final Logger logger, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(Level.FATAL)) {
            forcedLog(logger, Level.FATAL, format(pattern, arguments));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger    logger, may not be null.
     * @param t         throwable, may be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void trace(final Logger logger, final Throwable t, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, arguments), t);
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger    logger, may not be null.
     * @param t         throwable, may be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void debug(final Logger logger, final Throwable t, final String pattern, final Object[] arguments) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, arguments), t);
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger    logger, may not be null.
     * @param t         throwable, may be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void info(final Logger logger, final Throwable t, final String pattern, final Object[] arguments) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, arguments), t);
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger    logger, may not be null.
     * @param t         throwable, may be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void warn(final Logger logger, final Throwable t, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, arguments), t);
        }
    }

    /**
     * Log a parameterized message at error level.
     *
     * @param logger    logger, may not be null.
     * @param t         throwable, may be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void error(final Logger logger, final Throwable t, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(Level.ERROR)) {
            forcedLog(logger, Level.ERROR, format(pattern, arguments), t);
        }
    }

    /**
     * Log a parameterized message at fatal level.
     *
     * @param logger    logger, may not be null.
     * @param t         throwable, may be null.
     * @param pattern   pattern, may be null.
     * @param arguments an array of arguments to be formatted and substituted.
     */
    public static void fatal(final Logger logger, final Throwable t, final String pattern, final Object[] arguments) {
        if (logger.isEnabledFor(Level.FATAL)) {
            forcedLog(logger, Level.FATAL, format(pattern, arguments), t);
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final boolean argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final char argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final byte argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final short argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final int argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final long argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final float argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final double argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final Object argument) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, argument));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final Object arg0, final Object arg1) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, toArray(arg0, arg1)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, toArray(arg0, arg1, arg2)));
        }
    }

    /**
     * Log a parameterized message at trace level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     * @param arg3    a value to be formatted and substituted.
     */
    public static void trace(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2, final Object arg3) {
        if (logger.isEnabledFor(TRACE)) {
            forcedLog(logger, TRACE, format(pattern, toArray(arg0, arg1, arg2, arg3)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final boolean argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final char argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final byte argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final short argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final int argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final long argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final float argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final double argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final Object argument) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, argument));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final Object arg0, final Object arg1) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, toArray(arg0, arg1)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, toArray(arg0, arg1, arg2)));
        }
    }

    /**
     * Log a parameterized message at debug level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     * @param arg3    a value to be formatted and substituted.
     */
    public static void debug(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2, final Object arg3) {
        if (logger.isDebugEnabled()) {
            forcedLog(logger, Level.DEBUG, format(pattern, toArray(arg0, arg1, arg2, arg3)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final boolean argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final char argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final byte argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final short argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final int argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final long argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final float argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final double argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final Object argument) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, argument));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final Object arg0, final Object arg1) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, toArray(arg0, arg1)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, toArray(arg0, arg1, arg2)));
        }
    }

    /**
     * Log a parameterized message at info level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     * @param arg3    a value to be formatted and substituted.
     */
    public static void info(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2, final Object arg3) {
        if (logger.isInfoEnabled()) {
            forcedLog(logger, Level.INFO, format(pattern, toArray(arg0, arg1, arg2, arg3)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final boolean argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final char argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final byte argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final short argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final int argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final long argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final float argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final double argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, valueOf(argument)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger   logger, may not be null.
     * @param pattern  pattern, may be null.
     * @param argument a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final Object argument) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, argument));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final Object arg0, final Object arg1) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, toArray(arg0, arg1)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, toArray(arg0, arg1, arg2)));
        }
    }

    /**
     * Log a parameterized message at warn level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     * @param arg3    a value to be formatted and substituted.
     */
    public static void warn(final Logger logger, final String pattern, final Object arg0, final Object arg1,
            final Object arg2, final Object arg3) {
        if (logger.isEnabledFor(Level.WARN)) {
            forcedLog(logger, Level.WARN, format(pattern, toArray(arg0, arg1, arg2, arg3)));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param pattern    pattern, may be null.
     * @param parameters parameters to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final Object[] parameters) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, parameters));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param t          throwable, may be null.
     * @param pattern    pattern, may be null.
     * @param parameters parameters to the log message.
     */
    public static void log(final Logger logger, final Level level, final Throwable t, final String pattern,
            final Object[] parameters) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, parameters), t);
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final Object param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(param1)));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final boolean param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final byte param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final char param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final short param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final int param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final long param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final float param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param param1  parameter to the log message.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final double param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final Object arg0,
            final Object arg1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(arg0, arg1)));
        }
    }

    /**
     * Log a parameterized message at specifed level.
     *
     * @param logger  logger, may not be null.
     * @param level   level, may not be null.
     * @param pattern pattern, may be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final Object arg0,
            final Object arg1, final Object arg2) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(arg0, arg1, arg2)));
        }
    }

    /**
     * Log a parameterized message at specified level.
     *
     * @param logger  logger, may not be null.
     * @param pattern pattern, may be null.
     * @param level   level, may not be null.
     * @param arg0    a value to be formatted and substituted.
     * @param arg1    a value to be formatted and substituted.
     * @param arg2    a value to be formatted and substituted.
     * @param arg3    a value to be formatted and substituted.
     */
    public static void log(final Logger logger, final Level level, final String pattern, final Object arg0,
            final Object arg1, final Object arg2, final Object arg3) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(pattern, toArray(arg0, arg1, arg2, arg3)));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param parameters parameters to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final Object[] parameters) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, parameters));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param t          throwable, may be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param parameters parameters to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final Throwable t, final String bundleName,
            final String key, final Object[] parameters) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, parameters), t);
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final Object param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(param1)));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final boolean param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final char param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final byte param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final short param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final int param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final long param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final float param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final double param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(valueOf(param1))));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param0     Parameter to the log message.
     * @param param1     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final Object param0, final Object param1) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(param0, param1)));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param0     Parameter to the log message.
     * @param param1     Parameter to the log message.
     * @param param2     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final Object param0, final Object param1, final Object param2) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(param0, param1, param2)));
        }
    }

    /**
     * Log a parameterized message using a pattern from a resource bundle.
     *
     * @param logger     logger, may not be null.
     * @param level      level, may not be null.
     * @param bundleName resource bundle name, may be null.
     * @param key        key, may be null.
     * @param param0     Parameter to the log message.
     * @param param1     Parameter to the log message.
     * @param param2     Parameter to the log message.
     * @param param3     Parameter to the log message.
     */
    public static void logrb(final Logger logger, final Level level, final String bundleName, final String key,
            final Object param0, final Object param1, final Object param2, final Object param3) {
        if (logger.isEnabledFor(level)) {
            forcedLog(logger, level, format(bundleName, key, toArray(param0, param1, param2, param3)));
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy