2009-10-13 132 views
3

我读了下面的文章: http://odetocode.com/articles/294.aspxC#创建日志系统

本文提出了关于我的日志了很多问题。 (我不知道我是否应该在单独的问题中做出这个...但我不想用我的问题发送垃圾邮件stackoverflow.com)

第一个问题是如果我应该将它存储在.txt文件中,或者.xml文件......或者甚至在数据库中的表格中。 可能在.txt中保存性能会更好。但是当有人需要找到.txt文件时,它可能会成为一个痛苦的脖子。 那么......我应该使用哪一个,为什么?

第二个,有没有什么具体的类来处理“登录”的事情? 我已经阅读了关于这个主题的几个主题,并且我没有找到我的问题的答案。

在此先感谢。

回答

18

我过去采用的最简单的方法是使用log4net。这样你就可以在配置文件中配置日志记录。如果你需要它去一个数据库,请将它设置为这样。如果您想在发生重大错误时收到通知,请按照这种方式进行设置。

就整理日志而言,它实际上取决于您想采取的方法,以及您计划记录的程度。通常我登录到一个平面文本文件,因为我没有在我的应用程序中启用大量日志记录。所以通过它们解析并不是什么大问题。

+1

log4net是惊人的 - 我强烈建议给它一个尝试 – 2009-10-13 17:41:44

+1

电锯+ log4net = Awsome。 – 2009-11-30 20:16:02

+0

好的叫詹姆斯。电锯可以在http://logging.apache.org/chainsaw/index.html找到 – 2009-11-30 20:22:32

0

关于文件vs数据库,这取决于你自己选择。

文件日志提供更高的性能,但存在访问痛苦。

如果日志很少提供信息(例如应用程序崩溃并且您需要知道原因),那么最好将日志存储在文件中。

如果您想要访问这些日志,分析它们等,您应该将它们存储在数据库中。

.net实际上不是我的区域,但您为什么要使用框架的日志记录类有很多原因。

6

除非你想写一个教育系统的系统,我老实说认为你最好坚持log4netnlog

此外,您可能会更好地研究这些系统的代码,而不是编写自己的代码。

至于你的问题,我会坚持一个文本文件并缓存消息,然后将它们分发到磁盘。

4

为什么打扰发明轮?您可以检查MS企业库日志记录块。

2

绝对不是xml。

使用xml,您需要全部读取它,解析它,添加任何内容,然后再次生成整个xml,然后将其写回硬盘。每次你记录一些东西。

除非您手动将节点附加到xml文件,这样您就失去了大部分xml优点。

警告致命错误 - 无论将帮助您调试应用程序,如果它崩溃 - 我会存储在txt文件中的那些日志。 为每个条目添加一个新行。

这种方式,你也可以要求你的用户检查出来(如果你通过电话帮助他)。

如果它不是元日志,比如上面提到的,换句话说,如果它与程序本身有关,你可能需要分析 - 保持db。

0

对于我的应用程序,我选择了写入数据库。它更容易(对我来说)以这种方式读取日志。然而,我不会像有些人那样疯狂地登录,我只记录我需要登录的内容,而没有其他内容。

我不久前给log4net一个镜头,根本不喜欢它。写入数据库并发送电子邮件是一大堆垃圾。我最终编写了一个自定义的日志记录类,整个200行,只花了几个小时。它工作的很好,我没有另外的依赖,并且它可以很容易地改变。

+0

它在loggin数据库错误方面有什么优点? :P(Ref DNR 500) – 2009-11-30 14:01:32

+0

它不会告诉我给出的错误,但它会告诉我查询崩溃了,并且记录给查询的值是什么。我从来没有一个不能被复制的。 – corymathews 2009-11-30 14:47:06

0

如果你正在处理ASP.NET,ELMAH是另一个很好的日志记录工具。这显然是微软的Scott Hanselman uses。但是,需要一些additional code才能使其与ASP.NET MVC的HandleError属性一起工作。