C ++ Logger-我应该使用普通的xml解析器吗?

时间:2010-06-15 05:29:40

标签: c++ logging

我正在研究我的2D引擎的日志系统,我对如何创建/编辑文件以及如何输出该文件感到困惑。

我已经了解到XML更像是一种数据载体,而不是像HTML这样的数据显示器。我读过我可以使用XML到HTML转换器。我想到的一种方法是将字符写入HTML中的文件。

这些问题的清晰度是我对你的要求,堆​​栈溢出。

4 个答案:

答案 0 :(得分:1)

几乎我曾经使用的每一个日志都是由换行符分隔的纯文本。如果你要离开它,你可能想问问自己,你想用标记完成日志记录需求是什么。

如果你必须采用标记的方式,我会建议一种XML格式,它包含一组最适合你情况的标记。您可以使用XML来捕获日志条目中的结构(例如,时间戳,严重性和操作代码),这些结构不便于在HTML中进行编码。

请注意,您也可以混合使用并在XML元素中嵌入一些XHTML标记,其目的是捕获可显示的文本(如果需要)。

答案 1 :(得分:1)

创建XML(或HTML)文件不需要任何特殊库。简单的字符串连接通常很好,您可能需要对某些特殊字符进行编码(例如>>

但正如Owen所说,纯文本是日志文件中更常见的日志。一个合理的折衷方案是文本文件中以逗号分隔的值,这为您提供了一点结构而没有太多开销。例如,Windows Web服务器(IIS)默认使用此格式,如果您为每一行输出了一些字段,例如时间戳或源文件名和行号,则可以轻松地将这些字段再次分开。

答案 2 :(得分:1)

如果您正在考虑将日志写入XML文件,,请停止。

日志文件应该是简单的纯文本文件,XML-izing它引入了不必要的复杂性。它们不是结构化数据,而是由人们阅读,而不是自动化工具。

这一切都始于XML日志,and then it goes downhill from there

答案 3 :(得分:1)

XML或HTML文件的问题是您无法随时附加。您必须在写作结束时正确关闭最终标签(文档标签)。

因此,它不是一种流行的日志记录格式。

对于日志记录,我建议使用现有的日志引擎之一,例如Apache logger,或者John Torjo的boost log候选者。它们将支持日志级别,运行时配置等。