Package io.netty.util.internal.logging
Class MessageFormatter
- java.lang.Object
-
- io.netty.util.internal.logging.MessageFormatter
-
public final class MessageFormatter extends 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 '\'. CallingMessageFormatter.format("File name is C:\\\\{}.", "file.zip");
will return the string "File name is C:\file.zip". The formatting conventions are different than those ofMessageFormat
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 alsoformat(String, Object)
,format(String, Object, Object)
andarrayFormat(String, Object[])
methods for more details.