我正在使用logback(使用slf4j)来执行日志记录,并且我有许多XML内容要记录在文本文件和HTML文件中(使用HTMLLayout)。但是,logback只是在< TD>中插入原始XML。 HTMLLayout的标签,没有任何转义或< pre>处理
以下是我的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>
或者更好地使用&lt; pre&gt;包装上述消息标签。 我是否需要扩展HTMLLayout以存档?或者我的工作是为每个日志语句执行StringEscapeUtils.escapeHTML(msg)(我不打算这样做,因为还有一个文件追加器,不需要转义)。
谢谢!
答案 0 :(得分:4)
行。似乎我必须自己做:从logback扩展HTMLLayout并处理那里的转义。
请查看http://gist.github.com/284628
代码的第61行修改强>
当然,您必须使用新的扩展HTMLLyout然后替换logback.xml中的原始HTMLLyout,其中&lt; layout class = ...&gt;