【问题标题】:C++ Logger-Should I use an ordinary xml parser?C++ Logger-我应该使用普通的xml解析器吗?
【发布时间】:2010-06-15 05:29:39
【问题描述】:

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

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

我要求你澄清这些问题,堆栈溢出。

【问题讨论】:

  • 感谢您提供的信息,非常感谢。您已经解决了很多问题,请考虑回答这个问题。

标签: c++ logging


【解决方案1】:

创建 XML(或 HTML)文件不需要任何特殊的库。简单的字符串连接通常就足够了,您可能需要将一些特殊字符(例如 > 编码为 >

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

【讨论】:

  • "[...] 纯文本是一种更常见的日志 [...]" 不错!
  • 我想有时候错别字确实会解决。但这不是故意的。
【解决方案2】:

我使用过的几乎所有日志都是由换行符分隔的纯文本。如果您打算不这样做,您可能想问问自己,您希望通过标记来完成的日志记录需求是什么。

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 我编写了小型一次性工具,可以解析纯文本日志文件并创建漂亮的彩色 HTML(一个线程 ID 一种颜色)输出,以了解 MT 问题。但是,是的,日志应该写成纯文本。
    【解决方案4】:

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

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

    一切从 XML 日志开始,and then it goes downhill from there

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 2017-04-21
      • 1970-01-01
      • 2019-12-08
      相关资源
      最近更新 更多