From e27d8be5e1760e34ece0fea146bc2de8a57cd0ac Mon Sep 17 00:00:00 2001 From: Nicola Ken Barozzi Date: Tue, 11 Jun 2002 21:07:58 +0000 Subject: [PATCH] Removed runtime dependency from commons logging. 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 --- .../org/apache/poi/util/CommonsLogger.java | 191 +++++++ src/java/org/apache/poi/util/NullLogger.java | 503 ++++++++++++++++++ .../org/apache/poi/util/POILogFactory.java | 16 +- src/java/org/apache/poi/util/POILogger.java | 159 ++---- .../org/apache/poi/util/SystemOutLogger.java | 108 ++++ ...j.properties => complete-log4j.properties} | 0 .../devtools/fatal-only-log4j.properties} | 0 7 files changed, 850 insertions(+), 127 deletions(-) create mode 100644 src/java/org/apache/poi/util/CommonsLogger.java create mode 100644 src/java/org/apache/poi/util/NullLogger.java create mode 100644 src/java/org/apache/poi/util/SystemOutLogger.java rename src/resources/devtools/{log4j.properties => complete-log4j.properties} (100%) rename src/{java/log4j.properties => resources/devtools/fatal-only-log4j.properties} (100%) diff --git a/src/java/org/apache/poi/util/CommonsLogger.java b/src/java/org/apache/poi/util/CommonsLogger.java new file mode 100644 index 000000000..6b6f81661 --- /dev/null +++ b/src/java/org/apache/poi/util/CommonsLogger.java @@ -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 + * . + */ +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.

+ * + * @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 index 000000000..5e6942b55 --- /dev/null +++ b/src/java/org/apache/poi/util/NullLogger.java @@ -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 + * . + */ +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.

+ * + * @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.

+ * + * If the parameter is an array, it traverses the array first and + * matches parameters sequentially against the array items. + * Otherwise the parameters after message are matched + * in order.

+ * + * 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.

+ * + * 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.

+ * + * If the parameter is an array, it traverses the array first and + * matches parameters sequentially against the array items. + * Otherwise the parameters after message are matched + * in order.

+ * + * 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.

+ * + * 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.

+ * + * If the parameter is an array, it traverses the array first and + * matches parameters sequentially against the array items. + * Otherwise the parameters after message are matched + * in order.

+ * + * 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.

+ * + * 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.

+ * + * If the parameter is an array, it traverses the array first and + * matches parameters sequentially against the array items. + * Otherwise the parameters after message are matched + * in order.

+ * + * 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.

+ * + * 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 + } + +} + diff --git a/src/java/org/apache/poi/util/POILogFactory.java b/src/java/org/apache/poi/util/POILogFactory.java index 2378ab86a..0dff5a138 100644 --- a/src/java/org/apache/poi/util/POILogFactory.java +++ b/src/java/org/apache/poi/util/POILogFactory.java @@ -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; diff --git a/src/java/org/apache/poi/util/POILogger.java b/src/java/org/apache/poi/util/POILogger.java index a6d066c38..86c063bc7 100644 --- a/src/java/org/apache/poi/util/POILogger.java +++ b/src/java/org/apache/poi/util/POILogger.java @@ -55,12 +55,10 @@ */ 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.

@@ -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,65 +83,12 @@ public class POILogger * * @param log the object that does the real work of logging */ - - POILogger(final Log log) - { - this.log = log; - } - - /** - * 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); - } - } - - } + POILogger() + {} + + abstract public void initialize(final String cat); + + abstract public void log(final int level, final Object obj1); /** * Check if a logger is enabled to log at the specified level @@ -151,48 +96,7 @@ public class POILogger * @param level One of DEBUG, INFO, WARN, ERROR, FATAL * @param obj1 The logger to check. */ - - 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; - - } + abstract public boolean check(final int level); /** * Log a message. Lazily appends Object parameters together. @@ -202,9 +106,17 @@ public class POILogger * @param obj2 second object to place in the message */ + /** + * 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) { - 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 index 000000000..a1c595d53 --- /dev/null +++ b/src/java/org/apache/poi/util/SystemOutLogger.java @@ -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 + * . + */ +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.

+ * + * @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/log4j.properties b/src/resources/devtools/complete-log4j.properties similarity index 100% rename from src/resources/devtools/log4j.properties rename to src/resources/devtools/complete-log4j.properties diff --git a/src/java/log4j.properties b/src/resources/devtools/fatal-only-log4j.properties similarity index 100% rename from src/java/log4j.properties rename to src/resources/devtools/fatal-only-log4j.properties