I have some unexplained behavior with java.util.logging
. Let\'s take a look at these two samples:
First:
boolean var = false;
log.log( Lev
{
and }
are also potentially problems. This is why the NetBeans IDE hint to use message formats in log messages escapes these characters.
Besides
log.log(Level.WARNING, "Can''t {0}", new Object[] {var});
you can try simply and more readably
log.log(Level.WARNING, "Can’t {0}", new Object[] {var});
or just spell it out to begin with:
log.log(Level.WARNING, "Cannot {0}", new Object[] {var});
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