Esta es una posibilidad remota, pero espero reemplazar los literales de nueva línea en el código MessageFormat como
LOG.log(INFO, "message={0}\nAnd extra blank line\n", new String[]{message}); con un patrón independiente de la plataforma. El patrón String.format() %n no funciona para Logger o MessageFormat. Me gustaría evitar pasar System.lineseperator como un argumento como este:
LOG.log(INFO, "message={0}{1}And a blank line{1}",new String[]{message, System.lineSeparator()});No veo ninguna mención de nueva línea o separador de línea en los documentos para MessageFormat, pero tal vez se mencione en otro lugar. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/MessageFormat.html
¿Java MessageFormat tiene un separador de línea de plataforma como String.format?
Según mi lectura del código, la respuesta es No.
Y no hay RFE existentes o informes de errores sobre esto que pueda ver en los rastreadores de errores de Java o OpenJDK 1 .
Sin embargo, como señala Joop, dado que en realidad está preguntando esto en el contexto del registro, hay algunas otras formas de resolver esto (aunque no todas serán prácticas):
MessageFormat que reconozca una sintaxis que signifique "separador de línea específico de la plataforma".java.util.Formatter para la construcción de mensajes. AFAIK, la mayoría de los marcos modernos lo hacen. 1 - Podría leer eso como "evidencia" de cuán poco uso hay de MessageFormat en el mundo real/aplicaciones modernas, o cuán pocas personas lo usan en contextos donde los separadores de línea son importantes.
@Bohemian comentó:
¿Por qué quiere evitar "pasar System.lineseparator como argumento"?
Hubiera pensado que eso era evidente. es torpe