我正在使用 logback(使用 slf4j)进行日志记录,并且我有许多 XML 内容要记录在文本文件和 HTML 文件(使用 HTMLLayout)中。但是,logback 只是将原始 XML 插入到 HTMLLayout 的
处理。这是我的 logback.xml 的片段:
<appender name="ALL" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${DIR_ALL}/%d{yyyy-MM-dd}.%i.html</FileNamePattern> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <MaxFileSize>500KB</MaxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <layout class="ch.qos.logback.classic.html.HTMLLayout"> <pattern>%d{HH:mm:ss.SSS}%logger{1}%msg</pattern> <cssBuilder class="ch.qos.logback.classic.html.UrlCssBuilder"> <url>${CSS_HREF}</url> </cssBuilder> <title>Logs (ALL)</title> </layout>
以下是我得到的:
<td class="Message">(DemoCall) parsing response failed. Details: <call><action>getmessage</action></call> </td>
我的期望:
<td class="Message">(DemoCall) parsing response failed. Details: <call><action>getmessage</action></call> </td>
或者最好用
标签包裹上面的消息。 我需要扩展 HTMLLayout 来存档吗?或者我的工作是为每个日志语句执行 StringEscapeUtils.escapeHTML(msg) (我不会这样做,因为还有一个不需要转义的文件附加程序)。谢谢!
最佳答案
好的。看来我必须自己做:从 logback 扩展 HTMLLayout 并处理那里的转义。
请检查代码的第 61 行 http://gist.github.com/284628
编辑
当然,您必须使用新的扩展 HTMLLyout 来替换 logback.xml 中的原始 HTMLLyout,其中
关于escaping - 如何让XML在logback的HTMLLayout中转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2069135/