2

我想为我当前的项目编写一个带有 XML 输出的 Logger/Bug-Tracker。如果它应该是重复的,我很抱歉,但这些建议没有用,我也没有找到一个好的谷歌解决方案。

1:我的第一个问题是关于异常安全的。

如果我使用 XmlDocument,则日志将存储在内存中,直到我调用保存。这意味着如果发生异常,我可能会失去一切。

如果我使用 XmlWriter 它不会存储在内存中(afaik),但我必须关闭编写器和所有元素/节点,这些元素/节点也可能在出现异常的情况下缺失。我可以关闭并重新打开编写器(使用文档末尾的指针)吗?

创建异常安全的 XML 的最佳解决方案是什么?(我只需要提示)

2:我的第二个问题是关于内存使用的。

因为它是一个跟踪工具,所以输出可能非常巨大。因此我不能使用 XmlDocument。在我看来,XmlWriter 将是最好的解决方案。我说得对吗?

3:我最后一个[小]问题是关于时间消耗的。

使用 XML 文件进行跟踪是好主意还是坏主意?它会减慢我的程序多少?

我希望你能帮助我。

编辑:我为什么要使用 XML ? 稍后,我的应用程序将在“未知”环境中运行,因此我可以通过 Internet 将日志发送到服务器,并且我必须验证文件 (XMLSchema)。完成此操作后,我想将其转换为可读性更好(格式更佳)的 HTML 文件。

我的 HTML 文件

正如你所看到的,这是一个比 XML 更好的可视化(这仍然需要一些微调,但它的功能)

编辑 2:当前状态 我已经进行了一些内存使用测量。记录器(目前基于 XmlDocument :( )对于 5.000.000 个条目需要 ~600mb。不是最好的结果,但也不是最差的。

最好的问候亚历克斯

4

3 回答 3

1

对于跟踪文件,您需要 XML 的结构吗?文件制作完成后,您有什么计划;如果它纯粹用于人工处理,那么文本文件就足够了吗?这样你就可以在每次写入后刷新。如果你想要一个更可查询的文件格式,你能合并一个轻型数据库引擎吗?在更改 MDAC 和 MSAccess 文件访问的 64 位问题之前,我曾经写入一个 mdb 文件。最近我看起来像 SQLite 和 VistaDB。

您选择 XML 是否有特定的原因?

于 2013-08-23T00:12:40.757 回答
0

因为这个问题没有很好的答案,所以我必须自己回答。我已经决定为我的日志使用带有 10k 个条目的环形缓冲区(这在实时使用中似乎是一个不错的数字),并且我尝试构建一个线程和异常安全的 logbuf(我希望它有效)。

最好的问候和所有答案

亚历克斯

于 2013-09-18T18:54:55.387 回答
-1

为什么要推出自己的日志记录解决方案?有非常成熟的库可以“开箱即用”afaik。

于 2013-08-23T07:09:55.310 回答