Class MessageFormatter
- java.lang.Object
-
- org.slf4j.helpers.MessageFormatter
-
public final class MessageFormatter extends java.lang.Object
Formats messages according to very simple substitution rules. Substitutions can be made 1, 2 or more arguments.For example,
MessageFormatter.format("Hi {}.", "there")
will return the string "Hi there.".The {} pair is called the formatting anchor. It serves to designate the location where arguments need to be substituted within the message pattern.
In case your message contains the '{' or the '}' character, you do not have to do anything special unless the '}' character immediately follows '{'. For example,
MessageFormatter.format("Set {1,2,3} is not equal to {}.", "1,2");
will return the string "Set {1,2,3} is not equal to 1,2.".If for whatever reason you need to place the string "{}" in the message without its formatting anchor meaning, then you need to escape the '{' character with '\', that is the backslash character. Only the '{' character should be escaped. There is no need to escape the '}' character. For example,
MessageFormatter.format("Set \\{} is not equal to {}.", "1,2");
will return the string "Set {} is not equal to 1,2.".The escaping behavior just described can be overridden by escaping the escape character '\'. Calling
MessageFormatter.format("File name is C:\\\\{}.", "file.zip");
will return the string "File name is C:\file.zip".The formatting conventions are different than those of
MessageFormat
which ships with the Java platform. This is justified by the fact that SLF4J's implementation is 10 times faster than that ofMessageFormat
. This local performance difference is both measurable and significant in the larger context of the complete logging processing chain.See also
format(String, Object)
,format(String, Object, Object)
andarrayFormat(String, Object[])
methods for more details.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static char
DELIM_START
(package private) static char
DELIM_STOP
(package private) static java.lang.String
DELIM_STR
private static char
ESCAPE_CHAR
-
Constructor Summary
Constructors Constructor Description MessageFormatter()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static FormattingTuple
arrayFormat(java.lang.String messagePattern, java.lang.Object[] argArray)
static FormattingTuple
arrayFormat(java.lang.String messagePattern, java.lang.Object[] argArray, java.lang.Throwable throwable)
private static void
booleanArrayAppend(java.lang.StringBuilder sbuf, boolean[] a)
private static void
byteArrayAppend(java.lang.StringBuilder sbuf, byte[] a)
private static void
charArrayAppend(java.lang.StringBuilder sbuf, char[] a)
private static void
deeplyAppendParameter(java.lang.StringBuilder sbuf, java.lang.Object o, java.util.Map<java.lang.Object[],java.lang.Object> seenMap)
private static void
doubleArrayAppend(java.lang.StringBuilder sbuf, double[] a)
private static void
floatArrayAppend(java.lang.StringBuilder sbuf, float[] a)
static FormattingTuple
format(java.lang.String messagePattern, java.lang.Object arg)
Performs single argument substitution for the 'messagePattern' passed as parameter.static FormattingTuple
format(java.lang.String messagePattern, java.lang.Object arg1, java.lang.Object arg2)
Performs a two argument substitution for the 'messagePattern' passed as parameter.static java.lang.Throwable
getThrowableCandidate(java.lang.Object[] argArray)
Helper method to determine if anObject
array contains aThrowable
as last elementprivate static void
intArrayAppend(java.lang.StringBuilder sbuf, int[] a)
(package private) static boolean
isDoubleEscaped(java.lang.String messagePattern, int delimeterStartIndex)
(package private) static boolean
isEscapedDelimeter(java.lang.String messagePattern, int delimeterStartIndex)
private static void
longArrayAppend(java.lang.StringBuilder sbuf, long[] a)
private static void
objectArrayAppend(java.lang.StringBuilder sbuf, java.lang.Object[] a, java.util.Map<java.lang.Object[],java.lang.Object> seenMap)
private static void
safeObjectAppend(java.lang.StringBuilder sbuf, java.lang.Object o)
private static void
shortArrayAppend(java.lang.StringBuilder sbuf, short[] a)
static java.lang.Object[]
trimmedCopy(java.lang.Object[] argArray)
Helper method to get all but the last element of an array
-
-
-
Field Detail
-
DELIM_START
static final char DELIM_START
- See Also:
- Constant Field Values
-
DELIM_STOP
static final char DELIM_STOP
- See Also:
- Constant Field Values
-
DELIM_STR
static final java.lang.String DELIM_STR
- See Also:
- Constant Field Values
-
ESCAPE_CHAR
private static final char ESCAPE_CHAR
- See Also:
- Constant Field Values
-
-
Method Detail
-
format
public static final FormattingTuple format(java.lang.String messagePattern, java.lang.Object arg)
Performs single argument substitution for the 'messagePattern' passed as parameter.For example,
MessageFormatter.format("Hi {}.", "there");
will return the string "Hi there.".- Parameters:
messagePattern
- The message pattern which will be parsed and formattedarg
- The argument to be substituted in place of the formatting anchor- Returns:
- The formatted message
-
format
public static final FormattingTuple format(java.lang.String messagePattern, java.lang.Object arg1, java.lang.Object arg2)
Performs a two argument substitution for the 'messagePattern' passed as parameter.For example,
MessageFormatter.format("Hi {}. My name is {}.", "Alice", "Bob");
will return the string "Hi Alice. My name is Bob.".- Parameters:
messagePattern
- The message pattern which will be parsed and formattedarg1
- The argument to be substituted in place of the first formatting anchorarg2
- The argument to be substituted in place of the second formatting anchor- Returns:
- The formatted message
-
arrayFormat
public static final FormattingTuple arrayFormat(java.lang.String messagePattern, java.lang.Object[] argArray)
-
arrayFormat
public static final FormattingTuple arrayFormat(java.lang.String messagePattern, java.lang.Object[] argArray, java.lang.Throwable throwable)
-
isEscapedDelimeter
static final boolean isEscapedDelimeter(java.lang.String messagePattern, int delimeterStartIndex)
-
isDoubleEscaped
static final boolean isDoubleEscaped(java.lang.String messagePattern, int delimeterStartIndex)
-
deeplyAppendParameter
private static void deeplyAppendParameter(java.lang.StringBuilder sbuf, java.lang.Object o, java.util.Map<java.lang.Object[],java.lang.Object> seenMap)
-
safeObjectAppend
private static void safeObjectAppend(java.lang.StringBuilder sbuf, java.lang.Object o)
-
objectArrayAppend
private static void objectArrayAppend(java.lang.StringBuilder sbuf, java.lang.Object[] a, java.util.Map<java.lang.Object[],java.lang.Object> seenMap)
-
booleanArrayAppend
private static void booleanArrayAppend(java.lang.StringBuilder sbuf, boolean[] a)
-
byteArrayAppend
private static void byteArrayAppend(java.lang.StringBuilder sbuf, byte[] a)
-
charArrayAppend
private static void charArrayAppend(java.lang.StringBuilder sbuf, char[] a)
-
shortArrayAppend
private static void shortArrayAppend(java.lang.StringBuilder sbuf, short[] a)
-
intArrayAppend
private static void intArrayAppend(java.lang.StringBuilder sbuf, int[] a)
-
longArrayAppend
private static void longArrayAppend(java.lang.StringBuilder sbuf, long[] a)
-
floatArrayAppend
private static void floatArrayAppend(java.lang.StringBuilder sbuf, float[] a)
-
doubleArrayAppend
private static void doubleArrayAppend(java.lang.StringBuilder sbuf, double[] a)
-
getThrowableCandidate
public static java.lang.Throwable getThrowableCandidate(java.lang.Object[] argArray)
Helper method to determine if anObject
array contains aThrowable
as last element- Parameters:
argArray
- The arguments off which we want to know if it contains aThrowable
as last element- Returns:
- if the last
Object
in argArray is aThrowable
this method will return it, otherwise it returns null
-
trimmedCopy
public static java.lang.Object[] trimmedCopy(java.lang.Object[] argArray)
Helper method to get all but the last element of an array- Parameters:
argArray
- The arguments from which we want to remove the last element- Returns:
- a copy of the array without the last element
-
-