使用事件日志作为临时日志存储

时间:2011-06-29 07:48:21

标签: c# .net sql-server logging event-log

我们目前正在设计一个组织范围的日志记录机制(基于C#)。其中一个要求是将日志记录写入临时存储,然后将其移至中央数据库,以保存性能。

我们目前正在评估临时存储的两个选项 - 一个是内存中的数据库,例如SQL CE,另一个是Windows的事件日志。 我们不确定事件日志是否适合此任务。我们需要能够承受重负荷(每秒约50次),易于阅读和可靠的东西。

你怎么看?事件日志是否适合这些要求?表现如何? 任何见解都将受到高度赞赏。

谢谢!

3 个答案:

答案 0 :(得分:0)

我建议你使用MongoDB。所以也许你也可以像中央存储一样使用它,为本地和中心获得相同的基础设施。

答案 1 :(得分:0)

首先,这是 解决方案,但不一定是最佳解决方案,因为它实际上取决于您的需求。我们有一个固定大小的文件文件文件,用作循环日志。我们有固定长度的日志消息的好处,所以这对我们有用。每天一次,在更安静的时间,服务器提取它尚未读取的日志条目。它可以每秒处理几百个条目而不会出汗。如果服务器没有及时提取足够的旧条目,则存在旧的条目被覆盖的风险,但是文件的大小不太可能发生,因为我们也有利于事先知道大概是什么每天最多的参赛人数。

但正如我所说,这在很大程度上取决于您对哪种解决方案最佳的需求。我没有使用C#事件日志,但如果它们与旧的Windows NT事件记录器类似,它的好处是可以在没有客户端程序执行任何操作的情况下从外部读取。

答案 2 :(得分:0)

将本地日志条目传输到中央数据库可能是一项艰巨的任务。您必须处理所有可能的异常,中断等。出于这个原因,我建议考虑使用SQL Server Compact 4.0和Microsoft Sync Framework的解决方案。

我认为可以实现单向面向服务的同步解决方案。

此外,SQL Server Compact 4.0的数据库大小限制为4GB,处理> 250并发连接。您还可以选择在单击一次应用程序中包含x86和x64引导程序包。