允许使用编码包装器记录输出中的尖括号

时间:2015-10-30 18:48:38

标签: java xml log4j log4j2

作为Web应用程序配置的一部分,sysadmins可以编辑一个XML文件。在大多数情况下,它是独立的,但有些情况下,格式错误的XML配置可能会导致问题。

在我的Log4J appender配置中,我有以下String

PatternLayout

以及输出中包含<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{1} - %enc{%msg}%n"/> 的几个字符串,用于警告用户XML文件中特定的缺失或无效属性。但是,日志输出显示

<$tag></$tag>

使用上述... &lt;$tag&gt;&lt;&#x2F;$tag&gt; tags in $XML.xml are properly defined ...

有没有办法逃避尖括号,以便它们在日志中按预期显示?

1 个答案:

答案 0 :(得分:1)

告诉它通过%enc{}

执行此操作

https://logging.apache.org/log4j/2.x/manual/layouts.html

具体做法是:

  

&amp;,&lt;,&gt;,“,',/ /替换为相应的HTML实体

如果您需要在浏览器中查看它们,请在前往浏览器的途中对消息进行编码。日志是您的记录系统,视图(或视图的路径)应该改变它。

另一种解决方案是使用equals{pattern}{test}{substitution}替换尖括号。我的直觉反应是不这样做;如果系统无法安全地查看日志,那么该系统应该负责解决该问题 - 这是众所周知的解决方案中的一个众所周知的问题。