You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2006/01/17 21:40:32 UTC

svn commit: r369909 [1/2] - in /logging/sandbox/log4j/formatter: ./ src/main/java/org/apache/log4j/formatter/ src/test/java/org/apache/log4j/formatter/

Author: carnold
Date: Tue Jan 17 12:40:12 2006
New Revision: 369909

URL: http://svn.apache.org/viewcvs?rev=369909&view=rev
Log:
MessageFormat optimization for single arg, repackaging

Modified:
    logging/sandbox/log4j/formatter/build.xml
    logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogMF.java
    logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogSF.java
    logging/sandbox/log4j/formatter/src/test/java/org/apache/log4j/formatter/LogMFTest.java
    logging/sandbox/log4j/formatter/src/test/java/org/apache/log4j/formatter/LogMFTraceTest.java
    logging/sandbox/log4j/formatter/src/test/java/org/apache/log4j/formatter/LogSFTest.java
    logging/sandbox/log4j/formatter/src/test/java/org/apache/log4j/formatter/LogSFTraceTest.java
    logging/sandbox/log4j/formatter/src/test/java/org/apache/log4j/formatter/PerformanceTest.java

Modified: logging/sandbox/log4j/formatter/build.xml
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/formatter/build.xml?rev=369909&r1=369908&r2=369909&view=diff
==============================================================================
--- logging/sandbox/log4j/formatter/build.xml (original)
+++ logging/sandbox/log4j/formatter/build.xml Tue Jan 17 12:40:12 2006
@@ -15,16 +15,13 @@
   
 -->
 <project name="log4j-formatter" default="dist" basedir="." >
-	  <!-- The build.properties file defines the parth to local jar files -->
+	  <!-- The build.properties file defines the path to local jar files -->
 	  <property file="build.properties"/>
 
 	  <property name="version" value="0.1"/>
       <property name="target.dir" value="target"/>
-	  <property name="target-java2.dir" value="${target.dir}/java2"/>
 	  <property name="classes.dir" value="${target.dir}/classes"/>
-	  <property name="classes-java2.dir" value="${target-java2.dir}/classes"/>
 	  <property name="test-classes.dir" value="${target.dir}/test-classes"/>
-	  <property name="test-classes-java2.dir" value="${target-java2.dir}/test-classes"/>
 
 	  <property name="M2_REPO" value="${user.home}/.m2/repository"/>
 	  <property name="log4j.version" value="1.2.13"/>
@@ -41,57 +38,38 @@
 	  <target name="init">
 	  </target>
 	  	
-	  <target name="compile" depends="init" description="Compile for Java 5">
+	  <target name="compile-java2" depends="init" description="Compile LogMF">
          <mkdir dir="${classes.dir}"/>
 	  	 <javac destdir="${classes.dir}" 
 	  	           srcdir="src/main/java"
-	  			   includes="**/*.java"
+	  			   includes="**/LogMF.java **/LogSF.java"
+	  	           source="1.3"
+	  	           target="1.3"
+	  		       classpath="${log4j.jar}"/>
+	  </target>
+
+
+	  <target name="compile-logf" depends="init" description="Compile LogF">
+       <mkdir dir="${classes.dir}"/>
+	  	 <javac destdir="${classes.dir}" 
+	  	           srcdir="src/main/java"
+	  			   includes="**/LogF.java"
 	  	           source="1.5"
 	  	           target="1.5"
 	  		       classpath="${log4j.jar}"/>
 	  </target>
 
-	  <target name="prep-java2" depends="init">
-	  	  <mkdir dir="${target-java2.dir}/src/main/java"/>
-	  	  <copy todir="${target-java2.dir}/src/main/java">
-	  	  	  <fileset dir="src/main/java" 
-	  	  	     includes="**/*.java"
-	  	  	     excludes="**/LogF.java"/>
-	  	  </copy>
-	  	  <replace dir="${target-java2.dir}/src/main/java"
-	  	           includes="**/*.java">
-	  	  	   <replacefilter token="Object..." value="Object[]"/>
-	  	  	   <replacefilter token="Byte.valueOf" value="new Byte"/>
-	  	  	   <replacefilter token="Character.valueOf" value="new Character"/>
-		  	   <replacefilter token="Short.valueOf" value="new Short"/>
-		  	   <replacefilter token="Integer.valueOf" value="new Integer"/>
-		  	   <replacefilter token="Long.valueOf" value="new Long"/>
-	  	  	   <replacefilter token="Double.valueOf" value="new Double"/>
-		  	   <replacefilter token="Float.valueOf" value="new Float"/>
-		  	   <replacefilter token="StringBuilder" value="StringBuffer"/>
-	  	  </replace>
-	  </target>
 	  	
-	  <target name="compile-java2" depends="prep-java2" description="Compile for Java 2">
-       <mkdir dir="${classes-java2.dir}"/>
-	  	 <javac destdir="${classes-java2.dir}" 
-	  	           srcdir="${target.dir}/java2"
-	  			   includes="**/*.java"
-	  	           source="1.3"
-	  	           target="1.3"
-	  		       classpath="${log4j.jar}"/>
-	  </target>
-	
-	  <target name="jar" depends="compile" description="Prepare jar for Java 5">	    
-	    <delete file="${target.dir}/log4j-formatter-${version}.jar"/>
+	  <target name="jar-logmf" depends="compile-java2" description="Prepare jar for LogMF">	    
+	    <delete file="${target.dir}/log4j-logmf-${version}.jar"/>
 	    <mkdir dir="${target.dir}/"/>
 	    
-	    <jar jarfile="${target.dir}/log4j-formatter-${version}.jar" 
+	    <jar jarfile="${target.dir}/log4j-logmf-${version}.jar" 
 	    	 basedir="${classes.dir}">
 	      <manifest>
 	        <attribute name="Manifest-version" value="1.0"/>
 	        <section name="org/apache/log4j/formatter/">
-	          <attribute name="Implementation-Title" value="log4j formatting utility"/>
+	          <attribute name="Implementation-Title" value="LogMF message formatting utility"/>
 	          <attribute name="Implementation-Version" value="${version}"/>
 	          <attribute name="Implementation-Vendor" value="Apache Software Foundation"/>
 	        </section>
@@ -99,16 +77,16 @@
 	    </jar>
 	  </target>
 
-	  <target name="jar-java2" depends="compile-java2" description="Prepare jar for Java 2">	    
-	    <delete file="${target.dir}/log4j-formatter-${version}-java2.jar"/>
+	  <target name="jar-logsf" depends="compile-java2" description="Prepare jar for LogSF">	    
+	    <delete file="${target.dir}/log4j-logsf-${version}.jar"/>
 	    <mkdir dir="${target.dir}/"/>
 	    
-	    <jar jarfile="${target.dir}/log4j-formatter-${version}-java2.jar" 
-	    	 basedir="${classes-java2.dir}">
+	    <jar jarfile="${target.dir}/log4j-logsf-${version}.jar" 
+	    	 basedir="${classes.dir}">
 	      <manifest>
 	        <attribute name="Manifest-version" value="1.0"/>
 	        <section name="org/apache/log4j/formatter/">
-	          <attribute name="Implementation-Title" value="log4j formatting utility for Java 2"/>
+	          <attribute name="Implementation-Title" value="LogSF message formatting utility"/>
 	          <attribute name="Implementation-Version" value="${version}"/>
 	          <attribute name="Implementation-Vendor" value="Apache Software Foundation"/>
 	        </section>
@@ -116,35 +94,47 @@
 	    </jar>
 	  </target>
 
-	  <target name="testCompile-java2" depends="compile-java2" description="Compile tests for Java2">
-         <mkdir dir="${test-classes-java2.dir}"/>
-	  	 <javac destdir="${test-classes-java2.dir}" 
+  	  <target name="jar-logf" depends="compile-logf" description="Prepare jar for LogMF">	    
+  	    <delete file="${target.dir}/log4j-logf-${version}.jar"/>
+  	    <mkdir dir="${target.dir}/"/>
+  	    
+  	    <jar jarfile="${target.dir}/log4j-logf-${version}.jar" 
+  	    	 basedir="${classes.dir}">
+  	      <manifest>
+  	        <attribute name="Manifest-version" value="1.0"/>
+  	        <section name="org/apache/log4j/formatter/">
+  	          <attribute name="Implementation-Title" value="LogF message formatting utility"/>
+  	          <attribute name="Implementation-Version" value="${version}"/>
+  	          <attribute name="Implementation-Vendor" value="Apache Software Foundation"/>
+  	        </section>
+  	      </manifest>
+  	    </jar>
+  	  </target>
+
+	  <target name="jar" depends="jar-logmf, jar-logsf, jar-logf"/>
+	
+	  <target name="testCompile-java2" depends="compile-java2" description="Compile tests for LogSF and LogMF">
+         <mkdir dir="${test-classes.dir}"/>
+	  	 <javac destdir="${test-classes.dir}" 
 	  	           srcdir="src/test/java"
 	  			   includes="**/*.java"
-	  	 	       excludes="**/LogFTest*.java **/LogFTraceTest.java **/Java5*.java"
+	  	 	       excludes="**/LogF*.java **/Java5*.java"
 	  	           source="1.3"
 	  	           target="1.3"
-	  		       classpath="${classes-java2.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
+	  		       classpath="${classes.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
 	  </target>
 
- 	  <target name="testCompile" depends="compile" description="Compile tests for Java 5">
+ 	  <target name="testCompile" depends="testCompile-java2, compile-logf" description="Compile tests for LogSF, LogMF and LogF">
          <mkdir dir="${test-classes.dir}"/>
 	  	 <javac destdir="${test-classes.dir}" 
 	  	           srcdir="src/test/java"
-	  			   includes="**/*.java"
-	  	 	       excludes="**/LogFTest*.java **/LogFTraceTest.java **/Java5PerformanceTest.java"
-	  	           source="1.3"
-	  	           target="1.3"
-	  		       classpath="${classes.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
-		 <javac destdir="${test-classes.dir}" 
-		  	           srcdir="src/test/java"
-		  	 	       includes="**/LogFTest*.java **/LogFTraceTest.java  **/Java5PerformanceTest.java"
-		  	           source="1.5"
-		  	           target="1.5"
-		  		       classpath="${classes.dir};${log4j.jar};${junit.jar}"/>
+	  			   includes="**/LogF*.java **/Java5*.java"
+	  	           source="1.5"
+	  	           target="1.5"
+	  		       classpath="${test-classes.dir};${classes.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
 	  </target>
 	
-	  <target name="test" depends="testCompile" description="Run tests for Java 5">
+	  <target name="test" depends="testCompile" description="Run tests for LogF, LogMF and LogSF">
 	    <junit printsummary="yes" 
 	    	fork="yes">
 	  	  <classpath path="${test-classes.dir};${classes.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
@@ -158,10 +148,10 @@
 	  </target>
 
 	  <target name="test-java2" depends="compile-java2, testCompile-java2" 
-	       description="Run tests for Java 2">
+	       description="Run tests for LogMF and LogSF">
 	    <junit printsummary="yes" 
 	    	fork="yes">
-	  	  <classpath path="${test-classes-java2.dir};${classes-java2.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
+	  	  <classpath path="${test-classes.dir};${classes.dir};${log4j.jar};${junit.jar};${slf4j.jar}"/>
 	  	  <formatter type="plain" usefile="false"/>
 	  	  <batchtest>
 	  	    <fileset dir="src/test/java" 
@@ -190,16 +180,16 @@
 	    </javadoc>
 	 </target>
 	
-	  <target name="dist" depends="test, jar, test-java2, jar-java2, javadoc"
+	  <target name="dist" depends="test, jar, javadoc"
 	     description="Prepare distribution (both Java 2 and 5)">
-	    <tar tarfile="${target.dir}/logging-log4j-formatter-${version}.tar.gz"
+	    <tar tarfile="${target.dir}/logging-log4j-formatters-${version}.tar.gz"
 	         compression="gzip"
 	         longfile="gnu">
 	    	 <tarfileset dir="." 
-	  				prefix="logging-log4j-formatter-${version}"
+	  				prefix="logging-log4j-formatters-${version}"
 	  	            excludes="target/** .* .settings/**"/>
 	    	 <tarfileset dir="target" 
-	  				prefix="logging-log4j-formatter-${version}"
+	  				prefix="logging-log4j-formatters-${version}"
 	  	            includes="*.jar javadoc/**"/>
 	    </tar>
 	  </target>

Modified: logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogMF.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogMF.java?rev=369909&r1=369908&r2=369909&view=diff
==============================================================================
--- logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogMF.java (original)
+++ logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogMF.java Tue Jan 17 12:40:12 2006
@@ -18,6 +18,9 @@
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.Level;
+import java.text.NumberFormat;
+import java.text.DateFormat;
+import java.util.Date;
 import java.text.MessageFormat;
 
 /**
@@ -29,11 +32,6 @@
  */
 public final class LogMF {
 	/**
-	 * Invariant empty array.
-	 */
-	private static final Object[] NO_ARGS = new Object[0];
-
-	/**
 	 * private constructor.
 	 *
 	 */
@@ -41,6 +39,54 @@
 	}
 
 	/**
+	 * Formats arguments using a minimal subset
+	 * of MessageFormat syntax.
+	 * @param pattern pattern, may not be null.
+	 * @param arg0 argument, may be null.
+	 * @return Message string or null if pattern
+	 * is not supported.
+	 */
+	private static String subsetFormat(final String pattern,
+			final Object arg0) {
+		//
+		//  find position of first brace
+		//    if none then format is a literal
+		int bracePos = pattern.indexOf("{");
+		//
+		//  if the first format is {0} 
+		//    and there are no other format specifiers
+		//    and no quotes then substitute for {0}
+		if (bracePos != -1) {
+			if(pattern.indexOf("{0}", bracePos) == bracePos 
+					&& pattern.indexOf("{", bracePos + 1) == -1
+					&& pattern.indexOf("'") == -1) {
+				String replacement;
+				if (arg0 instanceof String) {
+					replacement = arg0.toString();
+				} else if (arg0 instanceof Number) {
+					replacement = NumberFormat.getInstance().format(arg0);	
+				} else if(arg0 instanceof Date) {
+					replacement = DateFormat.getDateTimeInstance(DateFormat.SHORT,
+							DateFormat.SHORT).format(arg0);
+				} else {
+					replacement = String.valueOf(arg0);
+				}
+				final StringBuffer buf = new StringBuffer(pattern);
+				buf.replace(bracePos, bracePos + 3, replacement);
+				return buf.toString();
+			}
+		} else {
+			//
+			//   pattern is a literal with no braces
+			//    and not quotes, return pattern.
+			if (pattern.indexOf("'") == -1) {
+				return pattern;
+			}
+		}
+		return null;
+	}
+	
+	/**
 	 * Formats arguments using MessageFormat.
 	 * @param pattern pattern, may be malformed.
 	 * @param arguments arguments, may be null or mismatched.
@@ -55,83 +101,22 @@
 	}
 
 	/**
-	 * Formats and makes trace level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logTrace(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.trace(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes debug level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logDebug(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.debug(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes info level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logInfo(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.info(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes warn level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logWarn(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.warn(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes error level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logError(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.error(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes fatal level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
+	 * Formats arguments using MessageFormat.
+	 * @param pattern pattern, may be malformed.
+	 * @param arguments arguments, may be null or mismatched.
+	 * @return Message string
 	 */
-	private static void logFatal(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.fatal(format(pattern, arguments));
+	private static String format(final String pattern, final Object arg0) {
+		String msg = subsetFormat(pattern, arg0);
+		if (msg == null) {
+			try {
+				msg = MessageFormat.format(pattern, new Object[] { arg0 });
+			} catch (IllegalArgumentException ex) {
+				msg = pattern;
+			}
 		}
+		return msg;
 	}
-
 	/**
 	 * Log a parameterized message at debug level.
 	 * @param logger logger, may not be null.
@@ -139,9 +124,9 @@
 	 * @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.isTraceEnabled()) {
-			logTrace(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, arguments));
 		}
 	}
 
@@ -152,9 +137,9 @@
 	 * @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()) {
-			logDebug(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, arguments));
 		}
 	}
 
@@ -165,9 +150,9 @@
 	 * @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()) {
-			logInfo(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, arguments));
 		}
 	}
 
@@ -178,9 +163,9 @@
 	 * @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)) {
-			logWarn(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, arguments));
 		}
 	}
 
@@ -191,9 +176,9 @@
 	 * @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)) {
-			logError(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, arguments));
 		}
 	}
 
@@ -204,20 +189,9 @@
 	 * @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)) {
-			logFatal(logger, pattern, arguments);
-		}
-	}
-
-	/**
-	 * Log a parameterized message at trace level.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null.
-	 */
-	public static void trace(final Logger logger, final String pattern) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, NO_ARGS);
+			final Object[] arguments) {
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, arguments));
 		}
 	}
 
@@ -229,8 +203,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, argument ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
 
@@ -242,8 +216,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Character(argument)));
 		}
 	}
 
@@ -255,8 +229,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Byte(argument)));
 		}
 	}
 
@@ -268,8 +242,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Short(argument)));
 		}
 	}
 
@@ -281,8 +255,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Integer(argument)));
 		}
 	}
 
@@ -294,8 +268,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Long(argument)));
 		}
 	}
 
@@ -307,8 +281,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Float(argument)));
 		}
 	}
 
@@ -320,8 +294,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Double(argument)));
 		}
 	}
 
@@ -333,8 +307,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, argument));
 		}
 	}
 
@@ -347,8 +321,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -362,21 +336,31 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at debug level.
+	 * 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 debug(final Logger logger, final String pattern) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, NO_ARGS);
+	public static void trace(final Logger logger, final String pattern,
+			final Object arg0, 
+			final Object arg1, 
+			final Object arg2,
+			final Object arg3) {
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern, 
+					new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
+	
 
 	/**
 	 * Log a parameterized message at debug level.
@@ -386,8 +370,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, argument ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
 
@@ -399,8 +383,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Character(argument)));
 		}
 	}
 
@@ -412,8 +396,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Byte(argument)));
 		}
 	}
 
@@ -425,8 +409,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Short(argument)));
 		}
 	}
 
@@ -438,8 +422,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Integer(argument)));
 		}
 	}
 
@@ -451,8 +435,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Long(argument)));
 		}
 	}
 
@@ -464,8 +448,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Float(argument)));
 		}
 	}
 
@@ -477,8 +461,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Double(argument)));
 		}
 	}
 
@@ -490,8 +474,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, argument));
 		}
 	}
 
@@ -504,8 +488,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -519,21 +503,28 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at info level.
+	 * 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 info(final Logger logger, final String pattern) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, NO_ARGS);
+	public static void debug(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
+	
 
 	/**
 	 * Log a parameterized message at info level.
@@ -543,8 +534,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, argument ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
 
@@ -556,8 +547,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Character(argument)));
 		}
 	}
 
@@ -569,8 +560,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Byte(argument)));
 		}
 	}
 
@@ -582,8 +573,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Short(argument)));
 		}
 	}
 
@@ -595,8 +586,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Integer(argument)));
 		}
 	}
 
@@ -608,8 +599,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Long(argument)));
 		}
 	}
 
@@ -621,8 +612,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Float(argument)));
 		}
 	}
 
@@ -634,8 +625,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Double(argument)));
 		}
 	}
 
@@ -647,8 +638,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, argument));
 		}
 	}
 
@@ -661,8 +652,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -676,21 +667,27 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at warn level.
+	 * 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 warn(final Logger logger, final String pattern) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, NO_ARGS);
+	public static void info(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
+	
 
 	/**
 	 * Log a parameterized message at warn level.
@@ -700,8 +697,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, argument ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
 
@@ -713,8 +710,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Character(argument)));
 		}
 	}
 
@@ -726,8 +723,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Byte(argument)));
 		}
 	}
 
@@ -739,8 +736,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Short(argument)));
 		}
 	}
 
@@ -752,8 +749,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Integer(argument)));
 		}
 	}
 
@@ -765,8 +762,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Long(argument)));
 		}
 	}
 
@@ -778,8 +775,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Float(argument)));
 		}
 	}
 
@@ -791,8 +788,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Double(argument)));
 		}
 	}
 
@@ -804,8 +801,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, argument));
 		}
 	}
 
@@ -818,8 +815,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -833,21 +830,28 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at error level.
+	 * 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 error(final Logger logger, final String pattern) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, NO_ARGS);
+	public static void warn(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
+	
 
 	/**
 	 * Log a parameterized message at error level.
@@ -857,8 +861,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, argument ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
 
@@ -870,8 +874,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Character(argument)));
 		}
 	}
 
@@ -883,8 +887,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Byte(argument)));
 		}
 	}
 
@@ -896,8 +900,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Short(argument)));
 		}
 	}
 
@@ -909,8 +913,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Integer(argument)));
 		}
 	}
 
@@ -922,8 +926,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Long(argument)));
 		}
 	}
 
@@ -935,8 +939,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Float(argument)));
 		}
 	}
 
@@ -948,8 +952,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Double(argument)));
 		}
 	}
 
@@ -961,8 +965,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, argument));
 		}
 	}
 
@@ -975,8 +979,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -990,21 +994,28 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at fatal level.
+	 * Log a parameterized message at error 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 fatal(final Logger logger, final String pattern) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, NO_ARGS);
+	public static void error(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
+	
 
 	/**
 	 * Log a parameterized message at fatal level.
@@ -1014,8 +1025,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, argument ? Boolean.TRUE : Boolean.FALSE));
 		}
 	}
 
@@ -1027,8 +1038,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Character(argument)));
 		}
 	}
 
@@ -1040,8 +1051,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Byte(argument)));
 		}
 	}
 
@@ -1053,8 +1064,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Short(argument)));
 		}
 	}
 
@@ -1066,8 +1077,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Integer(argument)));
 		}
 	}
 
@@ -1079,8 +1090,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Long(argument)));
 		}
 	}
 
@@ -1092,8 +1103,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Float(argument)));
 		}
 	}
 
@@ -1105,8 +1116,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Double(argument)));
 		}
 	}
 
@@ -1118,8 +1129,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, argument));
 		}
 	}
 
@@ -1132,8 +1143,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -1147,9 +1158,25 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
+	/**
+	 * Log a parameterized message at fatal 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 fatal(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, new Object[] { arg0, arg1, arg2, arg3 }));
+		}
+	}
 }

Modified: logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogSF.java
URL: http://svn.apache.org/viewcvs/logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogSF.java?rev=369909&r1=369908&r2=369909&view=diff
==============================================================================
--- logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogSF.java (original)
+++ logging/sandbox/log4j/formatter/src/main/java/org/apache/log4j/formatter/LogSF.java Tue Jan 17 12:40:12 2006
@@ -28,11 +28,6 @@
  */
 public final class LogSF {
 	/**
-	 * Invariant empty array.
-	 */
-	private static final Object[] NO_ARGS = new Object[0];
-
-	/**
 	 * private constructor.
 	 *
 	 */
@@ -64,83 +59,17 @@
 		return buf.toString();
 	}
 
-	
-	/**
-	 * Formats and makes debug level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logTrace(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.trace(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes debug level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logDebug(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.debug(format(pattern, arguments));
-		}
-	}
-
 	/**
-	 * Formats and makes info level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logInfo(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.info(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes warn level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logWarn(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.warn(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes error level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
-	 */
-	private static void logError(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.error(format(pattern, arguments));
-		}
-	}
-
-	/**
-	 * Formats and makes fatal level log request.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null or malformed.
-	 * @param arguments may be null or mismatched.
+	 * Formats arguments using SLF4J-like formatter.
+	 * @param pattern pattern, may be malformed.
+	 * @param argument argument.
+	 * @return Message string
 	 */
-	private static void logFatal(final Logger logger, final String pattern,
-			final Object[] arguments) {
-		if (pattern != null) {
-			logger.fatal(format(pattern, arguments));
-		}
+	private static String format(final String pattern, final Object argument) {
+		//
+		//  should be implemented to avoid array allocation.
+		//
+		return format(pattern, new Object[] { argument });
 	}
 
 	/**
@@ -150,9 +79,9 @@
 	 * @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.isTraceEnabled()) {
-			logTrace(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  arguments));
 		}
 	}
 
@@ -163,9 +92,9 @@
 	 * @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()) {
-			logDebug(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern, arguments));
 		}
 	}
 
@@ -176,9 +105,9 @@
 	 * @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()) {
-			logInfo(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern, arguments));
 		}
 	}
 
@@ -189,9 +118,9 @@
 	 * @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)) {
-			logWarn(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern, arguments));
 		}
 	}
 
@@ -202,9 +131,9 @@
 	 * @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)) {
-			logError(logger, pattern, arguments);
+			final Object[] arguments) {
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern, arguments));
 		}
 	}
 
@@ -215,20 +144,9 @@
 	 * @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)) {
-			logFatal(logger, pattern, arguments);
-		}
-	}
-
-	/**
-	 * Log a parameterized message at trace level.
-	 * @param logger logger, may not be null.
-	 * @param pattern pattern, may be null.
-	 */
-	public static void trace(final Logger logger, final String pattern) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, NO_ARGS);
+			final Object[] arguments) {
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern, arguments));
 		}
 	}
 
@@ -240,8 +158,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  argument ? Boolean.TRUE : Boolean.FALSE ));
 		}
 	}
 
@@ -253,8 +171,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Character(argument)));
 		}
 	}
 
@@ -266,8 +184,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Byte(argument)));
 		}
 	}
 
@@ -279,8 +197,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Short(argument)));
 		}
 	}
 
@@ -292,8 +210,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Integer(argument)));
 		}
 	}
 
@@ -305,8 +223,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Long(argument)));
 		}
 	}
 
@@ -318,8 +236,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Float(argument)));
 		}
 	}
 
@@ -331,8 +249,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Double(argument)));
 		}
 	}
 
@@ -344,8 +262,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  argument));
 		}
 	}
 
@@ -358,8 +276,8 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -373,22 +291,28 @@
 	 */
 	public static void trace(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isTraceEnabled()) {
-			logTrace(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at debug level.
+	 * 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 debug(final Logger logger, final String pattern) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, NO_ARGS);
+	public static void trace(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isTraceEnabled()) {
+			logger.trace(format(pattern,  new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
-
+	
 	/**
 	 * Log a parameterized message at debug level.
 	 * @param logger logger, may not be null.
@@ -397,8 +321,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  argument ? Boolean.TRUE : Boolean.FALSE ));
 		}
 	}
 
@@ -410,8 +334,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Character(argument)));
 		}
 	}
 
@@ -423,8 +347,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Byte(argument)));
 		}
 	}
 
@@ -436,8 +360,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Short(argument)));
 		}
 	}
 
@@ -449,8 +373,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Integer(argument)));
 		}
 	}
 
@@ -462,8 +386,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Long(argument)));
 		}
 	}
 
@@ -475,8 +399,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Float(argument)));
 		}
 	}
 
@@ -488,8 +412,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Double(argument)));
 		}
 	}
 
@@ -501,8 +425,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  argument));
 		}
 	}
 
@@ -515,8 +439,8 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -530,19 +454,25 @@
 	 */
 	public static void debug(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isDebugEnabled()) {
-			logDebug(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at info level.
+	 * 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 info(final Logger logger, final String pattern) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, NO_ARGS);
+	public static void debug(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isDebugEnabled()) {
+			logger.debug(format(pattern,  new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
 
@@ -554,8 +484,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  argument ? Boolean.TRUE : Boolean.FALSE ));
 		}
 	}
 
@@ -567,8 +497,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Character(argument)));
 		}
 	}
 
@@ -580,8 +510,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Byte(argument)));
 		}
 	}
 
@@ -593,8 +523,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Short(argument)));
 		}
 	}
 
@@ -606,8 +536,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Integer(argument)));
 		}
 	}
 
@@ -619,8 +549,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Long(argument)));
 		}
 	}
 
@@ -632,8 +562,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Float(argument)));
 		}
 	}
 
@@ -645,8 +575,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Double(argument)));
 		}
 	}
 
@@ -658,8 +588,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  argument));
 		}
 	}
 
@@ -672,8 +602,8 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -687,22 +617,29 @@
 	 */
 	public static void info(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isInfoEnabled()) {
-			logInfo(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at warn level.
+	 * 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 warn(final Logger logger, final String pattern) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, NO_ARGS);
+	public static void info(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isInfoEnabled()) {
+			logger.info(format(pattern,  new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
 
+
 	/**
 	 * Log a parameterized message at warn level.
 	 * @param logger logger, may not be null.
@@ -711,8 +648,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  argument ? Boolean.TRUE : Boolean.FALSE ));
 		}
 	}
 
@@ -724,8 +661,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Character(argument)));
 		}
 	}
 
@@ -737,8 +674,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Byte(argument)));
 		}
 	}
 
@@ -750,8 +687,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Short(argument)));
 		}
 	}
 
@@ -763,8 +700,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Integer(argument)));
 		}
 	}
 
@@ -776,8 +713,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Long(argument)));
 		}
 	}
 
@@ -789,8 +726,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Float(argument)));
 		}
 	}
 
@@ -802,8 +739,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Double(argument)));
 		}
 	}
 
@@ -815,8 +752,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  argument));
 		}
 	}
 
@@ -829,8 +766,8 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -844,22 +781,27 @@
 	 */
 	public static void warn(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isEnabledFor(Level.WARN)) {
-			logWarn(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
 	/**
-	 * Log a parameterized message at error level.
+	 * 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 error(final Logger logger, final String pattern) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, NO_ARGS);
+	public static void warn(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isEnabledFor(Level.WARN)) {
+			logger.warn(format(pattern,  new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
-
+	
 	/**
 	 * Log a parameterized message at error level.
 	 * @param logger logger, may not be null.
@@ -868,8 +810,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  argument ? Boolean.TRUE : Boolean.FALSE ));
 		}
 	}
 
@@ -881,8 +823,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Character(argument)));
 		}
 	}
 
@@ -894,8 +836,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Byte(argument)));
 		}
 	}
 
@@ -907,8 +849,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Short(argument)));
 		}
 	}
 
@@ -920,8 +862,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Integer(argument)));
 		}
 	}
 
@@ -933,8 +875,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Long(argument)));
 		}
 	}
 
@@ -946,8 +888,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Float(argument)));
 		}
 	}
 
@@ -959,8 +901,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Double(argument)));
 		}
 	}
 
@@ -972,8 +914,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  argument));
 		}
 	}
 
@@ -986,8 +928,8 @@
 	 */
 	public static void error(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -1000,23 +942,32 @@
 	 * @param arg2 a value to be formatted and substituted.
 	 */
 	public static void error(final Logger logger, final String pattern,
-			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isEnabledFor(Level.ERROR)) {
-			logError(logger, pattern, new Object[] { arg0, arg1, arg2 });
+			final Object arg0, final Object arg1, 
+			final Object arg2) {
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
+
 	/**
-	 * Log a parameterized message at fatal level.
+	 * Log a parameterized message at error 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 fatal(final Logger logger, final String pattern) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, NO_ARGS);
+	public static void error(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isEnabledFor(Level.ERROR)) {
+			logger.error(format(pattern,  new Object[] { arg0, arg1, arg2, arg3 }));
 		}
 	}
 
+
 	/**
 	 * Log a parameterized message at fatal level.
 	 * @param logger logger, may not be null.
@@ -1025,8 +976,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final boolean argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Boolean.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  argument ? Boolean.TRUE : Boolean.FALSE ));
 		}
 	}
 
@@ -1038,8 +989,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final char argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Character.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Character(argument)));
 		}
 	}
 
@@ -1051,8 +1002,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final byte argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Byte.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Byte(argument)));
 		}
 	}
 
@@ -1064,8 +1015,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final short argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Short.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Short(argument)));
 		}
 	}
 
@@ -1077,8 +1028,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final int argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Integer.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Integer(argument)));
 		}
 	}
 
@@ -1090,8 +1041,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final long argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Long.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Long(argument)));
 		}
 	}
 
@@ -1103,8 +1054,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final float argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Float.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Float(argument)));
 		}
 	}
 
@@ -1116,8 +1067,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final double argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { Double.valueOf(argument) });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Double(argument)));
 		}
 	}
 
@@ -1129,8 +1080,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final Object argument) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { argument });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  argument));
 		}
 	}
 
@@ -1143,8 +1094,8 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { arg0, arg1 });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Object[] { arg0, arg1 }));
 		}
 	}
 
@@ -1158,9 +1109,25 @@
 	 */
 	public static void fatal(final Logger logger, final String pattern,
 			final Object arg0, final Object arg1, final Object arg2) {
-		if (logger.isEnabledFor(Level.FATAL)) {
-			logFatal(logger, pattern, new Object[] { arg0, arg1, arg2 });
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Object[] { arg0, arg1, arg2 }));
 		}
 	}
 
+	/**
+	 * Log a parameterized message at fatal 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 fatal(final Logger logger, final String pattern,
+			final Object arg0, final Object arg1, 
+			final Object arg2, final Object arg3) {
+		if (pattern != null && logger.isEnabledFor(Level.FATAL)) {
+			logger.fatal(format(pattern,  new Object[] { arg0, arg1, arg2, arg3 }));
+		}
+	}
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org