我正在使用logback(使用slf4j)进行日志记录,并且我有许多XML内容需要同时记录在文本文件和HTML文件(使用htmllayout)中。但是,logback只是在HTML布局的<td>标记中插入原始XML,而不进行任何转义或<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>
或者最好用<pre>标签包装上述邮件。
我需要扩展htmllayout来存档它吗?或者我的工作是为每个日志语句执行StringEscapeUtils.escapeHTML(msg)(我不会这样做,因为也有一个不需要进行转义的文件附加器)。
谢谢!