为什么日志文件通常是扁平的?

时间:2011-08-22 15:00:34

标签: logging log4j slf4j flat-file logback

日志文件是不是由机器读取,而是由用户读取?我想知道是否有任何日志框架的文件追加器将其输出写入XML。

1 个答案:

答案 0 :(得分:2)

“记录到XML”是一个非常普遍的要求,因为没有标准的日志文件格式。但由于XML文件是文本文件,日志框架可以编写,并且由于许多框架允许配置日志行格式,因此我认为使用选择的XML标记定义日志输出没有问题。

对于log4j,它可能是这样的:

log4j.appender.A1.layout.ConversionPattern=<line>%n<date>%d</date>%n<threadName>%t</threadName>%n<level>%p</level>%n<logger>%c</logger>%n<text>%m</text>%n</line>%n

产生示例输出:

<line>
<date>2011-08-28 08:27:33,727</date>
<threadName>main</threadName>
<level>INFO</level>
<logger>com.log4jeval.Main</logger>
<text>Entering application.</text>
</line>

这看起来很像XML,不是吗?但它缺乏XML前导码,因此从技术上讲它不会有效。如果它至关重要,我建议编写一个扩展org.apache.log4j.FileAppender(或其任何子类)的自定义appender,它将处理每个日志文件中的任何其他打开/关闭文本。

将日志写入XML(纯文本文件中不存在)的问题是,您必须强制不是一个可能的日志语句会打印XML禁止字符,否则您将结束使用格式不正确的XML。如果不编写自定义appender,很难实现 - 例如,请参阅org.apache.log4j.HTMLAppender来源。