/* * 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; /** * This is a base class for LogMF and LogSF parameterized logging classes. * * * @see org.apache.log4j.LogMF * @see org.apache.log4j.LogSF * @since 1.2.16 */ public abstract class LogXF { /** * Trace level. */ protected static final Level TRACE = new Level(5000, "TRACE", 7); /** * Fully Qualified Class Name of this class. */ private static final String FQCN = LogXF.class.getName(); protected LogXF() { } /** * Returns a Boolean instance representing the specified boolean. * Boolean.valueOf was added in JDK 1.4. * * @param b a boolean value. * @return a Boolean instance representing b. */ protected static Boolean valueOf(final boolean b) { if (b) { return Boolean.TRUE; } return Boolean.FALSE; } /** * Returns a Character instance representing the specified char. * Character.valueOf was added in JDK 1.5. * * @param c a character value. * @return a Character instance representing c. */ protected static Character valueOf(final char c) { return new Character(c); } /** * Returns a Byte instance representing the specified byte. * Byte.valueOf was added in JDK 1.5. * * @param b a byte value. * @return a Byte instance representing b. */ protected static Byte valueOf(final byte b) { return new Byte(b); } /** * Returns a Short instance representing the specified short. * Short.valueOf was added in JDK 1.5. * * @param b a short value. * @return a Byte instance representing b. */ protected static Short valueOf(final short b) { return new Short(b); } /** * Returns an Integer instance representing the specified int. * Integer.valueOf was added in JDK 1.5. * * @param b an int value. * @return an Integer instance representing b. */ protected static Integer valueOf(final int b) { return new Integer(b); } /** * Returns a Long instance representing the specified long. * Long.valueOf was added in JDK 1.5. * * @param b a long value. * @return a Long instance representing b. */ protected static Long valueOf(final long b) { return new Long(b); } /** * Returns a Float instance representing the specified float. * Float.valueOf was added in JDK 1.5. * * @param b a float value. * @return a Float instance representing b. */ protected static Float valueOf(final float b) { return new Float(b); } /** * Returns a Double instance representing the specified double. * Double.valueOf was added in JDK 1.5. * * @param b a double value. * @return a Byte instance representing b. */ protected static Double valueOf(final double b) { return new Double(b); } /** * Create new array. * * @param param1 parameter 1. * @return new array. */ protected static Object[] toArray(final Object param1) { return new Object[]{ param1 }; } /** * Create new array. * * @param param1 parameter 1. * @param param2 parameter 2. * @return new array. */ protected static Object[] toArray(final Object param1, final Object param2) { return new Object[]{ param1, param2 }; } /** * Create new array. * * @param param1 parameter 1. * @param param2 parameter 2. * @param param3 parameter 3. * @return new array. */ protected static Object[] toArray(final Object param1, final Object param2, final Object param3) { return new Object[]{ param1, param2, param3 }; } /** * Create new array. * * @param param1 parameter 1. * @param param2 parameter 2. * @param param3 parameter 3. * @param param4 parameter 4. * @return new array. */ protected static Object[] toArray(final Object param1, final Object param2, final Object param3, final Object param4) { return new Object[]{ param1, param2, param3, param4 }; } /** * Log an entering message at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. */ public static void entering(final Logger logger, final String sourceClass, final String sourceMethod) { if (logger.isDebugEnabled()) { logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, sourceClass + "." + sourceMethod + " ENTRY", null)); } } /** * Log an entering message with a parameter at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. * @param param parameter, may be null. */ public static void entering(final Logger logger, final String sourceClass, final String sourceMethod, final String param) { if (logger.isDebugEnabled()) { String msg = sourceClass + "." + sourceMethod + " ENTRY " + param; logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, msg, null)); } } /** * Log an entering message with a parameter at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. * @param param parameter, may be null. */ public static void entering(final Logger logger, final String sourceClass, final String sourceMethod, final Object param) { if (logger.isDebugEnabled()) { String msg = sourceClass + "." + sourceMethod + " ENTRY "; if (param == null) { msg += "null"; } else { try { msg += param; } catch(Throwable ex) { msg += "?"; } } logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, msg, null)); } } /** * Log an entering message with an array of parameters at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. * @param params parameters, may be null. */ public static void entering(final Logger logger, final String sourceClass, final String sourceMethod, final Object[] params) { if (logger.isDebugEnabled()) { String msg = sourceClass + "." + sourceMethod + " ENTRY "; if (params != null && params.length > 0) { String delim = "{"; for (int i = 0; i < params.length; i++) { try { msg += delim + params[i]; } catch(Throwable ex) { msg += delim + "?"; } delim = ","; } msg += "}"; } else { msg += "{}"; } logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, msg, null)); } } /** * Log an exiting message at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. */ public static void exiting(final Logger logger, final String sourceClass, final String sourceMethod) { if (logger.isDebugEnabled()) { logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, sourceClass + "." + sourceMethod + " RETURN", null)); } } /** * Log an exiting message with result at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. * @param result result, may be null. */ public static void exiting( final Logger logger, final String sourceClass, final String sourceMethod, final String result) { if (logger.isDebugEnabled()) { logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, sourceClass + "." + sourceMethod + " RETURN " + result, null)); } } /** * Log an exiting message with result at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. * @param result result, may be null. */ public static void exiting( final Logger logger, final String sourceClass, final String sourceMethod, final Object result) { if (logger.isDebugEnabled()) { String msg = sourceClass + "." + sourceMethod + " RETURN "; if (result == null) { msg += "null"; } else { try { msg += result; } catch(Throwable ex) { msg += "?"; } } logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, msg, null)); } } /** * Logs a throwing message at DEBUG level. * * @param logger logger, may not be null. * @param sourceClass source class, may be null. * @param sourceMethod method, may be null. * @param thrown throwable, may be null. */ public static void throwing( final Logger logger, final String sourceClass, final String sourceMethod, final Throwable thrown) { if (logger.isDebugEnabled()) { logger.callAppenders(new LoggingEvent(FQCN, logger, Level.DEBUG, sourceClass + "." + sourceMethod + " THROW", thrown)); } } }