diff --git a/src/java/org/apache/poi/util/NullLogger.java b/src/java/org/apache/poi/util/NullLogger.java index 95c8c5d446..24643c8fde 100644 --- a/src/java/org/apache/poi/util/NullLogger.java +++ b/src/java/org/apache/poi/util/NullLogger.java @@ -27,12 +27,10 @@ package org.apache.poi.util; * @author Glen Stampoultzis (glens at apache.org) * @author Nicola Ken Barozzi (nicolaken at apache.org) */ -public class NullLogger extends POILogger -{ +public class NullLogger extends POILogger { @Override - public void initialize(final String cat) - { - //do nothing + public void initialize(final String cat){ + // do nothing } /** @@ -45,147 +43,7 @@ public class NullLogger extends POILogger @Override 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 + // do nothing } /** @@ -195,289 +53,19 @@ public class NullLogger extends POILogger * @param obj1 The object to log. This is converted to a string. * @param exception An exception to be logged */ - - @Override - public void log(final int level, final Object obj1, - final Throwable exception) - { - //do nothing + public void log(int level, Object obj1, final Throwable exception) { + // do nothing } + /** - * Log a message. Lazily appends Object parameters together. + * Check if a logger is enabled to log at the specified level * * @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 */ - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Throwable exception) - { - //do nothing + 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 - * @param obj3 third object to place in the message - * @param exception An error message to be logged - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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 - */ - - @Override - 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. - */ - - @Override - 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. - */ - - @Override - 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. - */ - - @Override - 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.
- */
-
- @Override
- 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 641949c391..7af73e3a87 100644
--- a/src/java/org/apache/poi/util/POILogFactory.java
+++ b/src/java/org/apache/poi/util/POILogFactory.java
@@ -15,7 +15,7 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
+
package org.apache.poi.util;
@@ -30,20 +30,18 @@ import java.util.Map;
* @author Marc Johnson (mjohnson at apache dot org)
* @author Nicola Ken Barozzi (nicolaken at apache.org)
*/
-
-public class POILogFactory
-{
-
+@Internal
+public final class POILogFactory {
/**
* Map of POILogger instances, with classes as keys
*/
- private static Map
- *
- * If the parameter is an array, it traverses the array first and
- * matches parameters sequentially against the array items.
- * Otherwise the parameters after
- *
- * 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(int level, String message,
- Object obj1)
- {
- commonLogFormatted(level, message, new Object[]
- {
- obj1
- });
- }
-
- /**
- * 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
- *
- * 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(int level, String message,
- Object obj1, Object obj2)
- {
- commonLogFormatted(level, message, new Object[]
- {
- obj1, obj2
- });
- }
-
- /**
- * 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
- *
- * 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(int level, String message,
- Object obj1, Object obj2,
- Object obj3)
- {
- commonLogFormatted(level, message, new Object[]
- {
- obj1, obj2, obj3
- });
- }
-
- /**
- * 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
- *
- * 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(int level, String message,
- Object obj1, Object obj2,
- Object obj3, Object obj4)
- {
- commonLogFormatted(level, message, new Object[]
- {
- obj1, obj2, obj3, obj4
- });
- }
-
- private void commonLogFormatted(int level, String message,
- Object [] unflatParams)
- {
-
-
- if (check(level))
- {
- Object[] params = flattenArrays(unflatParams);
-
- if (params[ params.length - 1 ] instanceof Throwable)
- {
- log(level, StringUtil.format(message, params),
- ( Throwable ) params[ params.length - 1 ]);
- }
- else
- {
- log(level, StringUtil.format(message, params));
+ public void log(int level, Object... objs) {
+ if (!check(level)) return;
+ StringBuilder sb = new StringBuilder(32);
+ Throwable lastEx = null;
+ for (int i=0; i
+ *
+ * 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 unflatParams... The objects to match against.
*/
- private Object [] flattenArrays(Object [] objects)
- {
+ public void logFormatted(int level, String message, Object... unflatParams) {
+ if (!check(level)) return;
+ Object[] params = flattenArrays(unflatParams);
+ String msg = StringUtil.format(message, params);
+ msg = msg.replaceAll("[\r\n]+", " "); // log forging escape
+
+ if (params.length > 0 && params[params.length-1] instanceof Throwable) {
+ log(level, msg, (Throwable)params[params.length-1]);
+ } else {
+ log(level, msg);
+ }
+ }
+
+ /**
+ * Flattens any contained objects. Only traverses one level deep.
+ */
+ private Object[] flattenArrays(Object... unflatParams) {
Listmessage are matched
- * in order.message are matched
- * in order.message are matched
- * in order.message are matched
- * in order.message are matched
+ * in order.