log4j2 中的 PatternLayout < > 转义字符

PatternLayout < > escape character in log4j2

我正在尝试输出一个包含字符 < > 的模式

08:06:41 DEBUG 69 [ch.fhnw.edu.rental.model.Movie] - <电影 'Cars' 已创建>

是日志消息。

我的PatternLayout如下:

            <PatternLayout pattern="%d{HH:mm:ss} %-5p %L [%c] - <%m%n>"/>

不幸的是,这会产生错误

[Fatal Error] log4j2.xml:5:65: The value of attribute "pattern" associated with an element type "PatternLayout" must not contain the '<' character.

如何在不将 < > 字符硬编码到源代码中的情况下转义它们?

您可以为此使用 HTML entity 代码:&lt; 用于 <&gt; 用于 >

小心放置它们的位置:

<PatternLayout pattern="%d{HH:mm:ss} %-5p %L [%c] - &lt;%m&gt;%n"/>

在上面的示例中,&gt; 需要放在 %n 之前,因为 %n 会生成换行符。