使用编码包装器在日志记录输出中允许尖括号
Allow angle brackets in logging output with encode wrapper
作为网络应用程序配置的一部分,有一个 XML 文件可供系统管理员编辑。在大多数情况下,它是独立存在的,但在某些情况下,格式错误的 XML 配置可能会导致问题。
在我的 Log4J appender 配置中,我有以下 PatternLayout
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{1} - %enc{%msg}%n"/>
和输出中包含 <$tag></$tag>
的几个字符串,以警告用户 XML 文件中特定缺失或无效的 属性。但是,日志输出显示
... <$tag></$tag> tags in $XML.xml are properly defined ...
同上PatternLayout
.
有没有办法转义仅尖括号,以便它们在日志中按预期显示?
你告诉它通过%enc{}
做到这一点:
https://logging.apache.org/log4j/2.x/manual/layouts.html
具体来说:
&, <, >, ", ', / Replaced with the corresponding HTML entity
如果您需要在浏览器中查看它们,请在发送至浏览器的途中对消息进行编码。日志是您的记录系统,视图(或视图的路径)应该改变它。
另一种解决方案是使用equals{pattern}{test}{substitution}
代替尖括号。我的直觉反应是不这样做;如果一个系统不能安全地查看日志,那么该系统应该负责解决这个问题——这是一个众所周知的解决方案的众所周知的问题。
作为网络应用程序配置的一部分,有一个 XML 文件可供系统管理员编辑。在大多数情况下,它是独立存在的,但在某些情况下,格式错误的 XML 配置可能会导致问题。
在我的 Log4J appender 配置中,我有以下 PatternLayout
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{1} - %enc{%msg}%n"/>
和输出中包含 <$tag></$tag>
的几个字符串,以警告用户 XML 文件中特定缺失或无效的 属性。但是,日志输出显示
... <$tag></$tag> tags in $XML.xml are properly defined ...
同上PatternLayout
.
有没有办法转义仅尖括号,以便它们在日志中按预期显示?
你告诉它通过%enc{}
做到这一点:
https://logging.apache.org/log4j/2.x/manual/layouts.html
具体来说:
&, <, >, ", ', / Replaced with the corresponding HTML entity
如果您需要在浏览器中查看它们,请在发送至浏览器的途中对消息进行编码。日志是您的记录系统,视图(或视图的路径)应该改变它。
另一种解决方案是使用equals{pattern}{test}{substitution}
代替尖括号。我的直觉反应是不这样做;如果一个系统不能安全地查看日志,那么该系统应该负责解决这个问题——这是一个众所周知的解决方案的众所周知的问题。