- added blurb about MessageFormatter performance compred to JDK's MessageFormat
- added link to article on "Logging with SLF4J and Guice" by Michael
Glauche
diff --git a/slf4j-api/src/main/java/org/slf4j/helpers/MessageFormatter.java b/slf4j-api/src/main/java/org/slf4j/helpers/MessageFormatter.java
index 81ecc46..c41ae9a 100644
--- a/slf4j-api/src/main/java/org/slf4j/helpers/MessageFormatter.java
+++ b/slf4j-api/src/main/java/org/slf4j/helpers/MessageFormatter.java
@@ -24,6 +24,7 @@
package org.slf4j.helpers;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
@@ -32,6 +33,7 @@
/**
* Formats messages according to very simple substitution rules. Substitutions
* can be made 1, 2 or more arguments.
+ *
* <p>
* For example,
*
@@ -41,9 +43,9 @@
*
* will return the string "Hi there.".
* <p>
- * The {} pair is called the <em>formatting anchor</em>. It serves to
- * designate the location where arguments need to be substituted within the
- * message pattern.
+ * The {} pair is called the <em>formatting anchor</em>. It serves to designate
+ * the location where arguments need to be substituted within the message
+ * pattern.
* <p>
* In case your message contains the '{' or the '}' character, you do not have
* to do anything special unless the '}' character immediately follows '{'. For
@@ -62,16 +64,13 @@
* character should be escaped. There is no need to escape the '}' character.
* For example,
*
- * <pre>
- * MessageFormatter.format("Set \\{} is not equal to {}.", "1,2");
- * </pre>
+ * <pre>MessageFormatter.format("Set \\{} is not equal to {}.", "1,2");</pre>
*
* will return the string "Set {} is not equal to 1,2.".
*
* <p>
* The escaping behavior just described can be overridden by escaping the escape
* character '\'. Calling
- *
* <pre>
* MessageFormatter.format("File name is C:\\\\{}.", "file.zip");
* </pre>
@@ -79,8 +78,16 @@
* will return the string "File name is C:\file.zip".
*
* <p>
- * See {@link #format(String, Object)}, {@link #format(String, Object, Object)}
- * and {@link #arrayFormat(String, Object[])} methods for more details.
+ * The formatting conventions are different than those of {@link MessageFormat}
+ * which ships with the Java platform. This is justified by the fact that
+ * SLF4J's implementation is 10 times faster than that of {@link MessageFormat}.
+ * This local performance difference is both measurable and significant in the
+ * larger context of the complete logging processing chain.
+ *
+ * <p>
+ * See also {@link #format(String, Object)},
+ * {@link #format(String, Object, Object)} and
+ * {@link #arrayFormat(String, Object[])} methods for more details.
*
* @author Ceki Gülcü
*/
@@ -104,10 +111,9 @@
* <p>
*
* @param messagePattern
- * The message pattern which will be parsed and formatted
+ * The message pattern which will be parsed and formatted
* @param argument
- * The argument to be substituted in place of the formatting
- * anchor
+ * The argument to be substituted in place of the formatting anchor
* @return The formatted message
*/
final public static String format(String messagePattern, Object arg) {
@@ -128,13 +134,13 @@
* will return the string "Hi Alice. My name is Bob.".
*
* @param messagePattern
- * The message pattern which will be parsed and formatted
+ * The message pattern which will be parsed and formatted
* @param arg1
- * The argument to be substituted in place of the first
- * formatting anchor
+ * The argument to be substituted in place of the first formatting
+ * anchor
* @param arg2
- * The argument to be substituted in place of the second
- * formatting anchor
+ * The argument to be substituted in place of the second formatting
+ * anchor
* @return The formatted message
*/
final public static String format(final String messagePattern, Object arg1,
@@ -148,10 +154,10 @@
* arguments can be passed in an array.
*
* @param messagePattern
- * The message pattern which will be parsed and formatted
+ * The message pattern which will be parsed and formatted
* @param argArray
- * An array of arguments to be substituted in place of
- * formatting anchors
+ * An array of arguments to be substituted in place of formatting
+ * anchors
* @return The formatted message
*/
final public static String arrayFormat(final String messagePattern,
@@ -269,8 +275,10 @@
try {
String oAsString = o.toString();
sbuf.append(oAsString);
- } catch( Throwable t) {
- System.err.println("SLF4J: Failed toString() invocation on an object of type ["+o.getClass().getName()+"]");
+ } catch (Throwable t) {
+ System.err
+ .println("SLF4J: Failed toString() invocation on an object of type ["
+ + o.getClass().getName() + "]");
t.printStackTrace();
sbuf.append("[FAILED toString()]");
}
diff --git a/slf4j-site/src/site/pages/docs.html b/slf4j-site/src/site/pages/docs.html
index 989b1ca..52a3020 100644
--- a/slf4j-site/src/site/pages/docs.html
+++ b/slf4j-site/src/site/pages/docs.html
@@ -49,6 +49,12 @@
Logger Plug-ins for RCP Applications</a>, by John J. Franey
</li>
+
+ <li><a
+ href="http://glauche.de/2009/08/24/logging-with-slf4j-and-guice/">Logging
+ with SLF4J and Guice</a>, by Michael Glauche
+ </li>
+
<li>
<a href="slf4j-in-10-slides.ppt">SLF4J in 10 slides</a>, by Ceki Gülcü
</li>
@@ -76,6 +82,7 @@
href="http://bsnyderblog.blogspot.com/2007/08/my-soapbox-for-slf4j.html">My
Soapbox for SLF4J</a>, by Bruce Snyder
</li>
+
</ul>