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

3
我正在构建一个C#/Asp.Net (FW 2.0) Web应用程序,我想知道应该在哪里存储错误日志条目。
我可以将其写入服务器上的文件中,但这对我来说似乎不正确。这与“数据库”的概念不一致。
另一个明显的答案是放到数据库中,但如果我没有与数据库的连接会怎样呢?如果客户端无法连接到数据库会发生什么情况(因为服务器和数据库显然不在同一台机器上)?
欢迎提出您的建议。
谢谢
编辑:我在谈论基本的错误日志记录,所以请不要参考像log4net这样的大型框架。
8个回答

6

我们内部所采用的是使用系统事件日志。这样,当我们启动时,可以推出 SCOM 并实时监控问题。 - Jeremy Boyd
链接已失效... - Tinh Huynh

3

与记录到数据库相比,log4net或nlog都不是“大型框架”。保持简单,这两个工具提供了您需要的准确功能,并且学习曲线非常小。


2
具备备用机制是一个很合理的情况。将日志记录到Windows事件日志中通常不实用,因为与关系型数据库一样,它难以分析日志。但是在数据库故障时允许事件记录到事件日志中并非一种奢侈选择,在我构建日志框架时考虑了这种情况(根据您的要求,不提供参考)。该框架支持一个名为“fallbackProvider”的概念,以便在主记录器失败时将事件记录到备用记录器中。自己编写日志机制时,可以采用这种概念。祝你好运。

你能给我更多关于你的框架的信息吗?存储在事件日志中的错误很难检索,正如你所说,这不是一个奢侈的选择。 - ALOToverflow
它被称为CuttingEdge.Logging,托管在CodePlex上:http://logging.codeplex.com。它包含用于写入MS SQL数据库和Windows事件日志的记录器。当您构建ASP.NET应用程序时,请查看此配置示例: http://logging.codeplex.com/wikipage?title=Configuration&referringTitle=Home#Complete_ASP_NET_configutation_example。 - Steven

1

将其存储在事件日志中;毕竟它就是为此目的而设计的!无论用户对应用程序有多少了解,这都是大多数人寻找错误、消息和警告的地方。

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

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


0

我想你有三个选择:

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

0

将日志记录到数据库和xml作为备用方案,asp.net帐户需要权限将错误日志记录到事件查看器,除非绝对必要,否则在Web服务器上执行此操作可能不是一个好主意。


0

如果您愿意考虑一个简单的商业产品,请看看Gibraltar。它会在本地存储日志,然后在有网络连接时将其上传到Web服务。这些日志随后会被索引到嵌入式数据库中,分析工具可让您以所需的任何详细级别查看错误和其他信息。

我看到您是一名学生,弗兰克。请直接给我发电子邮件,以讨论我们向您提供免费许可证的可能性。


以下是一些可能会感兴趣的链接:我上周末刚完成的全新入门视频:http://www.gibraltarsoftware.com/Try/Getting-Started.aspx博客文章描述了我们几天前发布的新版本:http://rocksolid.gibraltarsoftware.com/development/gibraltar-2-1-1-released - Jay Cincotta

-1
-系统事件查看器
-你可以将错误缓存到本地的轻量级数据库文件中(可以是SqLite/Sql Compact),然后在有网络连接时将其发送到服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接