Java logger - apostrophe issues with tokens
java, java.util.logging, logging
Solution
It appears that whatever logging mechanism you're using is using the `MessageFormat` class internally. If so, then you'll need to escape the apostrophe character, because it's a single-quote character. Single-quote characters are used to quote text that isn't meant to be interpreted.
MessageFormat javadocs:
Within a String, a pair of single quotes can be used to quote any arbitrary characters except single quotes. For example, pattern string "'{0}'" represents string "{0}", not a FormatElement. A single quote itself must be represented by doubled single quotes '' throughout a String.
(emphasis mine)
Try
log.log( Level.WARNING, "Can''t {0}", new Object[] { var } );
This code:
MessageFormat mf = new MessageFormat("Can''t {0}");
System.out.println(mf.format(new Object[] {false}));
yields this output:
Can't false
Problem
I have some unexplained behavior with `java.util.logging`. Let's take a look at these two samples: First: ``` boolean var = false; log.log( Level.WARNING, "Cant {0}", new Object[] { var } ); ``` output: ``` Cant false ``` Second: ``` boolean var = false; log.log( Level.WARNING, "Can't {0}", new Object[] { var } ); ``` output: Can't {0} Why does the inclusion of an apostrophe ( ' ) causes the logger not to expand the token?