2
我使用logback(使用slf4j)來進行日誌記錄,並且我有很多XML內容要記錄在文本文件和HTML文件中(使用HTMLLayout)。但是,logback只是將原始XML插入HTMLLayout的<TD>標記中,而沒有任何轉義或<前>處理。如何使XML在logback的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)(我不打算這樣做,因爲還有一個不需要轉義的文件appender)。
謝謝!
非常感謝您提供的努力成果!非常感激。輕微niggle:在org.apache.commons.lang3第61行中斷:方法escapeHtml不再存在......您可能想用escapeHtml4替換。實際上,我的需求恰恰相反:我想要「
」在日誌文件中生成一個新行。我所要做的就是擺脫'Transform.escapeTags(...)'。 – 2017-01-22 10:06:57