/*
* 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));
}
}
}