我应该在哪里存储错误日志?

时间:2010-02-03 13:19:47

标签: c# .net asp.net logging

我正在构建一个C#/ Asp.Net(FW 2.0)Web应用程序,我想知道应该在哪里存储我的错误日志条目。

我可以将它写在服务器上的文件中,但这对我来说似乎不对。这与数据库的想法不一致。

另一个重要的答案是数据库,但如果我没有与数据库建立任何连接,会发生什么。如果客户端收到数据库的连接错误我该怎么办(因为服务器和数据库显然不在同一台机器上)?

您的建议表示赞赏。

比你

编辑:我在这里谈论基本的错误记录,请不要像log4net那样引用大框架。

8 个答案:

答案 0 :(得分:6)

带有相应事件源(日志记录通道)的系统事件日志

http://support.microsoft.com/kb/307024

答案 1 :(得分:3)

与记录到数据库相比,log4net或nlog不是“大框架”。保持简单,这两个提供了你所需要的,只有很少的加速期。

答案 2 :(得分:2)

拥有回退机制是一个非常有效的方案。记录到Windows事件日志通常是不切实际的,因为与关系数据库一样,分析日志并不容易。但是,当数据库发生故障时允许将事件记录到事件日志中并不是IMO的奢侈选择。

这种情况是我构建日志框架的原因之一(我不会按照您的要求引用它)。它支持一个名为'fallbackProvider'的概念,允许在主记录器失败的情况下将事件记录到备用记录器。当您编写自己的日志记录机制时,您可以接受这样的概念。

祝你好运。

答案 3 :(得分:1)

将其存储在事件日志中;它毕竟是为此目的而设计的!无论他们对应用程序的了解程度如何,大多数人都会寻找错误,消息和警告。

企业库提供了一个可以使用Enterprise Library的日志记录框架。这允许您根据配置文件更改事件的记录方式/位置,这样您就不必决定记录事件的位置。

除此之外,如果您使用异常处理块,您还可以轻松地将错误记录到事件日志中

答案 4 :(得分:0)

我猜你真的有三种选择:

  1. 使用小型数据库使用像SQLlite或SQLServer Compact这样轻量级的东西在本地计算机上存储所有错误日志。
  2. 将其保存到您可以查看的平面文件(xml或您拥有的文件)。
  3. 直接发送到事件日志。 (我可能会这样做)。

答案 5 :(得分:0)

登录数据库并将xml作为后备,asp.net帐户将需要perms将错误记录到eventviewer,这可能不是Web服务器上的好主意,除非它绝对是不成功的。

答案 6 :(得分:0)

如果您愿意考虑使用简单的商品,请查看Gibraltar。它在本地存储日志,然后在连接可用时将其上载到Web服务。然后在嵌入式数据库中对日志进行索引,并使用分析工具查看所需的任何详细级别的错误和其他信息。

我知道你是学生,弗兰克。直接给我发电子邮件,讨论我们为您提供免费许可的可能性。

答案 7 :(得分:-1)

- 系统事件查看器
- 您可以将错误缓存到本地&轻量级db文件(可以是SqLite / Sql Compact),然后当连接可用时,将其发送到服务器