尝试使用以下模式布局来打印编码的日志消息,以使\ n不会在日志中被打印为新行。

  <layout class="org.apache.log4j.PatternLayout">
     <param name="ConversionPattern" value="%d{MM-dd-yyyy HH:mm:ss,SSS} %5p [%t] (%F:%L) - %enc{%m}%n"/>
  </layout>


但是它实际上是在每条消息之前打印%enc{,并在消息末尾打印},而不是对它们进行编码。 \ n也不会被替换。

示例:对于此代码logger.info("my \n message"),以下是输出日志

08-01-2018 01:26:37,642  INFO [localhost-startStop-1] (ClassName1.java:53) - %enc{my
message}


相反,它应该像

08-01-2018 01:26:37,642  INFO [localhost-startStop-1] (ClassName1.java:53) - my message


遵循本文档https://logging.apache.org/log4j/log4j-2.1/manual/layouts.html,但我不确定该模式出了什么问题。

最佳答案

您应该在大括号中确定编码格式。例如,%enc{%m}{HTML}将消息编码为HTML格式。您也可以使用CRLF:enc{%m}{CRLF}

09-11 19:12
查看更多