]> source.dussan.org Git - poi.git/commitdiff
Removed runtime dependency from commons logging.
authorNicola Ken Barozzi <nicolaken@apache.org>
Tue, 11 Jun 2002 21:07:58 +0000 (21:07 +0000)
committerNicola Ken Barozzi <nicolaken@apache.org>
Tue, 11 Jun 2002 21:07:58 +0000 (21:07 +0000)
Now the PoiLogFactory will try to create a logger using the System property
named "org.apache.poi.util.POILogger".

If it fails, the NullLogger is used.
There is also a basic SystemOutLogger and the former CommonsLogger.

Haven't checked the code that much, but it compiles and POI works.

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352672 13f79535-47bb-0310-9956-ffa450edef68

src/java/log4j.properties [deleted file]
src/java/org/apache/poi/util/CommonsLogger.java [new file with mode: 0644]
src/java/org/apache/poi/util/NullLogger.java [new file with mode: 0644]
src/java/org/apache/poi/util/POILogFactory.java
src/java/org/apache/poi/util/POILogger.java
src/java/org/apache/poi/util/SystemOutLogger.java [new file with mode: 0644]
src/resources/devtools/complete-log4j.properties [new file with mode: 0644]
src/resources/devtools/fatal-only-log4j.properties [new file with mode: 0644]
src/resources/devtools/log4j.properties [deleted file]

diff --git a/src/java/log4j.properties b/src/java/log4j.properties
deleted file mode 100644 (file)
index 404b985..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# Set root logger level to FATAL and its only appender to stdout
-log4j.rootLogger=FATAL, stdout
-log4j.category.org=FATAL,  stdout
-
-# stdout is set to be a ConsoleAppender. 
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-  
-# stdout uses PatternLayout.
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
diff --git a/src/java/org/apache/poi/util/CommonsLogger.java b/src/java/org/apache/poi/util/CommonsLogger.java
new file mode 100644 (file)
index 0000000..6b6f816
--- /dev/null
@@ -0,0 +1,191 @@
+
+/*
+ * ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache POI" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache POI", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.poi.util;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.*;
+
+/**
+ * A logger class that strives to make it as easy as possible for
+ * developers to write log calls, while simultaneously making those
+ * calls as cheap as possible by performing lazy evaluation of the log
+ * message.<p>
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Glen Stampoultzis (glens at apache.org)
+ * @author Nicola Ken Barozzi (nicolaken at apache.org)
+ */
+
+public class CommonsLogger extends POILogger
+{
+
+    private static LogFactory   _creator = LogFactory.getFactory();
+    private Log             log   = null;
+
+   
+    public void initialize(final String cat)
+    {
+        this.log = _creator.getInstance(cat);
+    }   
+     
+    /**
+     * Log a message
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The object to log.
+     */
+
+    public void log(final int level, final Object obj1)
+    {
+        if(level==FATAL)
+        {
+          if(log.isFatalEnabled())
+          {
+            log.fatal(obj1);
+          }
+        }
+        else if(level==ERROR)
+        {
+          if(log.isErrorEnabled())
+          {
+            log.error(obj1);
+          }
+        }
+        else if(level==WARN)
+        {
+          if(log.isWarnEnabled())
+          {
+            log.warn(obj1);
+          }
+        }
+        else if(level==INFO)
+        {
+          if(log.isInfoEnabled())
+          {
+            log.info(obj1);
+          }
+        }
+        else if(level==DEBUG)
+        {
+          if(log.isDebugEnabled())
+          {
+            log.debug(obj1);
+          }
+        }
+        else
+        {
+          if(log.isTraceEnabled())
+          {
+            log.trace(obj1);
+          }
+        }
+
+    }
+
+    /**
+     * Check if a logger is enabled to log at the specified level
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The logger to check.
+     */
+
+    public boolean check(final int level)
+    {
+        if(level==FATAL)
+        {
+          if(log.isFatalEnabled())
+          {
+            return true;
+          }
+        }
+        else if(level==ERROR)
+        {
+          if(log.isErrorEnabled())
+          {
+            return true;
+          }
+        }
+        else if(level==WARN)
+        {
+          if(log.isWarnEnabled())
+          {
+            return true;
+          }
+        }
+        else if(level==INFO)
+        {
+          if(log.isInfoEnabled())
+          {
+            return true;
+          }
+        }
+        else if(level==DEBUG)
+        {
+          if(log.isDebugEnabled())
+          {
+            return true;
+          }
+        }
+
+        return false;
+
+    }
+
+}   // end package scope class POILogger
+
diff --git a/src/java/org/apache/poi/util/NullLogger.java b/src/java/org/apache/poi/util/NullLogger.java
new file mode 100644 (file)
index 0000000..5e6942b
--- /dev/null
@@ -0,0 +1,503 @@
+
+/*
+ * ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache POI" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache POI", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.poi.util;
+
+import java.util.*;
+
+/**
+ * A logger class that strives to make it as easy as possible for
+ * developers to write log calls, while simultaneously making those
+ * calls as cheap as possible by performing lazy evaluation of the log
+ * message.<p>
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Glen Stampoultzis (glens at apache.org)
+ * @author Nicola Ken Barozzi (nicolaken at apache.org)
+ */
+
+public class NullLogger extends POILogger
+{
+    public void initialize(final String cat)
+    {
+       //do nothing    
+    }
+    
+    /**
+     * Log a message
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The object to log.
+     */
+
+    public void log(final int level, final Object obj1)
+    {
+        //do nothing
+    }
+
+    /**
+     * Check if a logger is enabled to log at the specified level
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The logger to check.
+     */
+
+    public boolean check(final int level)
+    {
+       return false;
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first object to place in the message
+     * @param obj2 second object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third Object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third Object to place in the message
+     * @param obj4 fourth Object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third Object to place in the message
+     * @param obj4 fourth Object to place in the message
+     * @param obj5 fifth Object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third Object to place in the message
+     * @param obj4 fourth Object to place in the message
+     * @param obj5 fifth Object to place in the message
+     * @param obj6 sixth Object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Object obj6)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third Object to place in the message
+     * @param obj4 fourth Object to place in the message
+     * @param obj5 fifth Object to place in the message
+     * @param obj6 sixth Object to place in the message
+     * @param obj7 seventh Object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Object obj6, final Object obj7)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third Object to place in the message
+     * @param obj4 fourth Object to place in the message
+     * @param obj5 fifth Object to place in the message
+     * @param obj6 sixth Object to place in the message
+     * @param obj7 seventh Object to place in the message
+     * @param obj8 eighth Object to place in the message
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Object obj6, final Object obj7, final Object obj8)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The object to log.  This is converted to a string.
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1,
+                    final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third object to place in the message
+     * @param exception An error message to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third object to place in the message
+     * @param obj4 fourth object to place in the message
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4,
+                    final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third object to place in the message
+     * @param obj4 fourth object to place in the message
+     * @param obj5 fifth object to place in the message
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third object to place in the message
+     * @param obj4 fourth object to place in the message
+     * @param obj5 fifth object to place in the message
+     * @param obj6 sixth object to place in the message
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Object obj6, final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third object to place in the message
+     * @param obj4 fourth object to place in the message
+     * @param obj5 fifth object to place in the message
+     * @param obj6 sixth object to place in the message
+     * @param obj7 seventh object to place in the message
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Object obj6, final Object obj7,
+                    final Throwable exception)
+    {
+      //do nothing
+    }
+
+    /**
+     * Log a message. Lazily appends Object parameters together.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 first Object to place in the message
+     * @param obj2 second Object to place in the message
+     * @param obj3 third object to place in the message
+     * @param obj4 fourth object to place in the message
+     * @param obj5 fifth object to place in the message
+     * @param obj6 sixth object to place in the message
+     * @param obj7 seventh object to place in the message
+     * @param obj8 eighth object to place in the message
+     * @param exception An exception to be logged
+     */
+
+    public void log(final int level, final Object obj1, final Object obj2,
+                    final Object obj3, final Object obj4, final Object obj5,
+                    final Object obj6, final Object obj7, final Object obj8,
+                    final Throwable exception)
+    {
+       //do nothing
+    }
+
+    /**
+     * Logs a formated message. The message itself may contain %
+     * characters as place holders. This routine will attempt to match
+     * the placeholder by looking at the type of parameter passed to
+     * obj1.<p>
+     *
+     * If the parameter is an array, it traverses the array first and
+     * matches parameters sequentially against the array items.
+     * Otherwise the parameters after <code>message</code> are matched
+     * in order.<p>
+     *
+     * If the place holder matches against a number it is printed as a
+     * whole number. This can be overridden by specifying a precision
+     * in the form %n.m where n is the padding for the whole part and
+     * m is the number of decimal places to display. n can be excluded
+     * if desired. n and m may not be more than 9.<p>
+     *
+     * If the last parameter (after flattening) is a Throwable it is
+     * logged specially.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param message The message to log.
+     * @param obj1 The first object to match against.
+     */
+
+    public void logFormatted(final int level, final String message,
+                             final Object obj1)
+    {
+       //do nothing
+    }
+
+    /**
+     * Logs a formated message. The message itself may contain %
+     * characters as place holders. This routine will attempt to match
+     * the placeholder by looking at the type of parameter passed to
+     * obj1.<p>
+     *
+     * If the parameter is an array, it traverses the array first and
+     * matches parameters sequentially against the array items.
+     * Otherwise the parameters after <code>message</code> are matched
+     * in order.<p>
+     *
+     * If the place holder matches against a number it is printed as a
+     * whole number. This can be overridden by specifying a precision
+     * in the form %n.m where n is the padding for the whole part and
+     * m is the number of decimal places to display. n can be excluded
+     * if desired. n and m may not be more than 9.<p>
+     *
+     * If the last parameter (after flattening) is a Throwable it is
+     * logged specially.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param message The message to log.
+     * @param obj1 The first object to match against.
+     * @param obj2 The second object to match against.
+     */
+
+    public void logFormatted(final int level, final String message,
+                             final Object obj1, final Object obj2)
+    {
+       //do nothing
+    }
+
+    /**
+     * Logs a formated message. The message itself may contain %
+     * characters as place holders. This routine will attempt to match
+     * the placeholder by looking at the type of parameter passed to
+     * obj1.<p>
+     *
+     * If the parameter is an array, it traverses the array first and
+     * matches parameters sequentially against the array items.
+     * Otherwise the parameters after <code>message</code> are matched
+     * in order.<p>
+     *
+     * If the place holder matches against a number it is printed as a
+     * whole number. This can be overridden by specifying a precision
+     * in the form %n.m where n is the padding for the whole part and
+     * m is the number of decimal places to display. n can be excluded
+     * if desired. n and m may not be more than 9.<p>
+     *
+     * If the last parameter (after flattening) is a Throwable it is
+     * logged specially.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param message The message to log.
+     * @param obj1 The first object to match against.
+     * @param obj2 The second object to match against.
+     * @param obj3 The third object to match against.
+     */
+
+    public void logFormatted(final int level, final String message,
+                             final Object obj1, final Object obj2,
+                             final Object obj3)
+    {
+       //do nothing
+    }
+
+    /**
+     * Logs a formated message. The message itself may contain %
+     * characters as place holders. This routine will attempt to match
+     * the placeholder by looking at the type of parameter passed to
+     * obj1.<p>
+     *
+     * If the parameter is an array, it traverses the array first and
+     * matches parameters sequentially against the array items.
+     * Otherwise the parameters after <code>message</code> are matched
+     * in order.<p>
+     *
+     * If the place holder matches against a number it is printed as a
+     * whole number. This can be overridden by specifying a precision
+     * in the form %n.m where n is the padding for the whole part and
+     * m is the number of decimal places to display. n can be excluded
+     * if desired. n and m may not be more than 9.<p>
+     *
+     * If the last parameter (after flattening) is a Throwable it is
+     * logged specially.
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param message The message to log.
+     * @param obj1 The first object to match against.
+     * @param obj2 The second object to match against.
+     * @param obj3 The third object to match against.
+     * @param obj4 The forth object to match against.
+     */
+
+    public void logFormatted(final int level, final String message,
+                             final Object obj1, final Object obj2,
+                             final Object obj3, final Object obj4)
+    {
+       //do nothing
+    }
+
+} 
+
index 2378ab86a7aa2d5d156ba9b47e22bf29cf7c2ca1..0dff5a138c1c34155c7eb51b1af38dc4f77ea0e2 100644 (file)
@@ -60,8 +60,6 @@ import java.io.IOException;
 
 import java.util.*;
 
-import org.apache.commons.logging.*;
-
 /**
  * Provides logging without clients having to mess with
  * configuration/initialization.
@@ -73,7 +71,6 @@ import org.apache.commons.logging.*;
 
 public class POILogFactory
 {
-    private static LogFactory   _creator = LogFactory.getFactory();
 
     // map of POILogger instances, with classes as keys
     private static Map          _loggers = new HashMap();;
@@ -118,7 +115,18 @@ public class POILogFactory
         }
         else
         {
-            logger = new POILogger(_creator.getInstance(cat));
+            try{
+              String loggerClassName = System.getProperty("org.apache.poi.util.POILogger");
+              Class loggerClass = Class.forName(loggerClassName);
+              logger = ( POILogger ) loggerClass.newInstance();
+            }
+            catch(Exception e){
+            
+              logger = new NullLogger();
+            }
+            
+            logger.initialize(cat);
+            
             _loggers.put(cat, logger);
         }
         return logger;
index a6d066c38d87a8ffc676f405390ada5f7a250739..86c063bc728f1fa1dce17ebac6c998e305d4cc39 100644 (file)
  */
 package org.apache.poi.util;
 
-import org.apache.commons.logging.Log;
-
 import java.util.*;
 
 /**
- * A logger class that strives to make it as easy as possible for
+ * A logger interface that strives to make it as easy as possible for
  * developers to write log calls, while simultaneously making those
  * calls as cheap as possible by performing lazy evaluation of the log
  * message.<p>
@@ -70,9 +68,9 @@ import java.util.*;
  * @author Nicola Ken Barozzi (nicolaken at apache.org)
  */
 
-public class POILogger
+public abstract class POILogger
 {
-    private Log             log   = null;
+
     public static final int DEBUG = 1;
     public static final int INFO  = 3;
     public static final int WARN  = 5;
@@ -85,116 +83,30 @@ public class POILogger
      *
      * @param log the object that does the real work of logging
      */
-
-    POILogger(final Log log)
-    {
-        this.log = log;
-    }
+    POILogger()
+    {}
+    
+    abstract public void initialize(final String cat);
+    
+    abstract public void log(final int level, final Object obj1);
 
     /**
-     * Log a message
+     * Check if a logger is enabled to log at the specified level
      *
      * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
-     * @param obj1 The object to log.
+     * @param obj1 The logger to check.
      */
-
-    public void log(final int level, final Object obj1)
-    {
-        if(level==FATAL)
-        {
-          if(log.isFatalEnabled())
-          {
-            log.fatal(obj1);
-          }
-        }
-        else if(level==ERROR)
-        {
-          if(log.isErrorEnabled())
-          {
-            log.error(obj1);
-          }
-        }
-        else if(level==WARN)
-        {
-          if(log.isWarnEnabled())
-          {
-            log.warn(obj1);
-          }
-        }
-        else if(level==INFO)
-        {
-          if(log.isInfoEnabled())
-          {
-            log.info(obj1);
-          }
-        }
-        else if(level==DEBUG)
-        {
-          if(log.isDebugEnabled())
-          {
-            log.debug(obj1);
-          }
-        }
-        else
-        {
-          if(log.isTraceEnabled())
-          {
-            log.trace(obj1);
-          }
-        }
-
-    }
+    abstract public boolean check(final int level);
 
     /**
-     * Check if a logger is enabled to log at the specified level
+     * Log a message. Lazily appends Object parameters together.
      *
      * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
-     * @param obj1 The logger to check.
+     * @param obj1 first object to place in the message
+     * @param obj2 second object to place in the message
      */
 
-    public boolean check(final Log log, final int level)
-    {
-        if(level==FATAL)
-        {
-          if(log.isFatalEnabled())
-          {
-            return true;
-          }
-        }
-        else if(level==ERROR)
-        {
-          if(log.isErrorEnabled())
-          {
-            return true;
-          }
-        }
-        else if(level==WARN)
-        {
-          if(log.isWarnEnabled())
-          {
-            return true;
-          }
-        }
-        else if(level==INFO)
-        {
-          if(log.isInfoEnabled())
-          {
-            return true;
-          }
-        }
-        else if(level==DEBUG)
-        {
-          if(log.isDebugEnabled())
-          {
-            return true;
-          }
-        }
-
-        return false;
-
-    }
-
-    /**
+   /**
      * Log a message. Lazily appends Object parameters together.
      *
      * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
@@ -204,7 +116,7 @@ public class POILogger
 
     public void log(final int level, final Object obj1, final Object obj2)
     {
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(32).append(obj1).append(obj2));
         }
@@ -224,7 +136,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level,
                     new StringBuffer(48).append(obj1).append(obj2)
@@ -247,7 +159,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level,
                     new StringBuffer(64).append(obj1).append(obj2)
@@ -271,7 +183,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level,
                     new StringBuffer(80).append(obj1).append(obj2)
@@ -297,7 +209,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level ,
                     new StringBuffer(96).append(obj1).append(obj2)
@@ -324,7 +236,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level,
                     new StringBuffer(112).append(obj1).append(obj2)
@@ -353,7 +265,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level,
                     new StringBuffer(128).append(obj1).append(obj2)
@@ -390,7 +302,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(32).append(obj1).append(obj2),
                     exception);
@@ -412,7 +324,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(48).append(obj1).append(obj2)
                 .append(obj3), exception);
@@ -436,7 +348,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(64).append(obj1).append(obj2)
                 .append(obj3).append(obj4), exception);
@@ -461,7 +373,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(80).append(obj1).append(obj2)
                 .append(obj3).append(obj4).append(obj5), exception);
@@ -487,7 +399,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level , new StringBuffer(96).append(obj1)
                 .append(obj2).append(obj3).append(obj4).append(obj5)
@@ -516,7 +428,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(112).append(obj1).append(obj2)
                 .append(obj3).append(obj4).append(obj5).append(obj6)
@@ -546,7 +458,7 @@ public class POILogger
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             log(level, new StringBuffer(128).append(obj1).append(obj2)
                 .append(obj3).append(obj4).append(obj5).append(obj6)
@@ -696,14 +608,14 @@ public class POILogger
         {
             obj1, obj2, obj3, obj4
         });
-    }
+    }                             
 
     private void commonLogFormatted(final int level, final String message,
                                     final Object [] unflatParams)
     {
         
 
-        if (check(log, level))
+        if (check(level))
         {
             Object[] params = flattenArrays(unflatParams);
 
@@ -816,5 +728,6 @@ public class POILogger
         }
         return results;
     }
-}   // end package scope class POILogger
+                                 
+}   // end package scope abstract class POILogger
 
diff --git a/src/java/org/apache/poi/util/SystemOutLogger.java b/src/java/org/apache/poi/util/SystemOutLogger.java
new file mode 100644 (file)
index 0000000..a1c595d
--- /dev/null
@@ -0,0 +1,108 @@
+
+/*
+ * ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation.  All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ *    "Apache POI" must not be used to endorse or promote products
+ *    derived from this software without prior written permission. For
+ *    written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    "Apache POI", nor may "Apache" appear in their name, without
+ *    prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.poi.util;
+
+import org.apache.commons.logging.Log;
+
+import java.util.*;
+
+/**
+ * A logger class that strives to make it as easy as possible for
+ * developers to write log calls, while simultaneously making those
+ * calls as cheap as possible by performing lazy evaluation of the log
+ * message.<p>
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Glen Stampoultzis (glens at apache.org)
+ * @author Nicola Ken Barozzi (nicolaken at apache.org)
+ */
+
+public class SystemOutLogger extends POILogger
+{
+    private String cat;
+
+    public void initialize(final String cat)
+    {
+       this.cat=cat;
+    }
+    
+    /**
+     * Log a message
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The object to log.
+     */
+
+    public void log(final int level, final Object obj1)
+    {
+        System.out.println("["+cat+"] "+obj1);
+    }
+
+    /**
+     * Check if a logger is enabled to log at the specified level
+     *
+     * @param level One of DEBUG, INFO, WARN, ERROR, FATAL
+     * @param obj1 The logger to check.
+     */
+
+    public boolean check(final int level)
+    {
+       return true;
+    }
+
+}   // end package scope class POILogger
+
diff --git a/src/resources/devtools/complete-log4j.properties b/src/resources/devtools/complete-log4j.properties
new file mode 100644 (file)
index 0000000..1eef6c2
--- /dev/null
@@ -0,0 +1,31 @@
+#log4j.rootCategory=debug,  globalLog
+log4j.category.org.apache.poi.hssf=debug,  hssfLog
+log4j.category.org.apache.poi.hdf=debug,  hdfLog
+log4j.category.org.apache.poi.hpsf=debug,  hpsfLog
+log4j.category.org.apache.poi.poifs=debug,  poifsLog
+log4j.category.org.apache.poi.util=debug,  utilLog
+
+log4j.appender.hssfLog=org.apache.log4j.FileAppender
+log4j.appender.hssfLog.File=build/hssf.log
+log4j.appender.hssfLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.hssfLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
+log4j.appender.hdfLog=org.apache.log4j.FileAppender
+log4j.appender.hdfLog.File=build/hdf.log
+log4j.appender.hdfLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.hdfLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
+log4j.appender.hpsfLog=org.apache.log4j.FileAppender
+log4j.appender.hpsfLog.File=build/hpsf.log
+log4j.appender.hpsfLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.hpsfLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
+log4j.appender.poifsLog=org.apache.log4j.FileAppender
+log4j.appender.poifsLog.File=build/poifs.log
+log4j.appender.poifsLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.poifsLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
+log4j.appender.utilLog=org.apache.log4j.FileAppender
+log4j.appender.utilLog.File=build/util.log
+log4j.appender.utilLog.layout=org.apache.log4j.PatternLayout
+log4j.appender.utilLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
diff --git a/src/resources/devtools/fatal-only-log4j.properties b/src/resources/devtools/fatal-only-log4j.properties
new file mode 100644 (file)
index 0000000..404b985
--- /dev/null
@@ -0,0 +1,12 @@
+# Set root logger level to FATAL and its only appender to stdout
+log4j.rootLogger=FATAL, stdout
+log4j.category.org=FATAL,  stdout
+
+# stdout is set to be a ConsoleAppender. 
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+  
+# stdout uses PatternLayout.
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+
diff --git a/src/resources/devtools/log4j.properties b/src/resources/devtools/log4j.properties
deleted file mode 100644 (file)
index 1eef6c2..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#log4j.rootCategory=debug,  globalLog
-log4j.category.org.apache.poi.hssf=debug,  hssfLog
-log4j.category.org.apache.poi.hdf=debug,  hdfLog
-log4j.category.org.apache.poi.hpsf=debug,  hpsfLog
-log4j.category.org.apache.poi.poifs=debug,  poifsLog
-log4j.category.org.apache.poi.util=debug,  utilLog
-
-log4j.appender.hssfLog=org.apache.log4j.FileAppender
-log4j.appender.hssfLog.File=build/hssf.log
-log4j.appender.hssfLog.layout=org.apache.log4j.PatternLayout
-log4j.appender.hssfLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
-log4j.appender.hdfLog=org.apache.log4j.FileAppender
-log4j.appender.hdfLog.File=build/hdf.log
-log4j.appender.hdfLog.layout=org.apache.log4j.PatternLayout
-log4j.appender.hdfLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
-log4j.appender.hpsfLog=org.apache.log4j.FileAppender
-log4j.appender.hpsfLog.File=build/hpsf.log
-log4j.appender.hpsfLog.layout=org.apache.log4j.PatternLayout
-log4j.appender.hpsfLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
-log4j.appender.poifsLog=org.apache.log4j.FileAppender
-log4j.appender.poifsLog.File=build/poifs.log
-log4j.appender.poifsLog.layout=org.apache.log4j.PatternLayout
-log4j.appender.poifsLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-
-log4j.appender.utilLog=org.apache.log4j.FileAppender
-log4j.appender.utilLog.File=build/util.log
-log4j.appender.utilLog.layout=org.apache.log4j.PatternLayout
-log4j.appender.utilLog.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n