C#创建日志系统

时间:2009-10-13 16:59:15

标签: c# asp.net .net-3.5 logging

我正在阅读以下文章: http://odetocode.com/articles/294.aspx

这篇文章引发了很多关于日志的问题。 (我不知道我是否应该在分开的问题中做到这一点......但我不想垃圾邮件stackoverflow.com与我的问题)

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

第二个,是否有任何特定的类来处理“日志”的事情? 我已经阅读了关于这个主题的几个主题,但我没有找到我的问题的答案。

提前致谢。

8 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:6)

除非您想为教育目的编写系统,否则我认为您最好坚持使用log4netnlog

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

关于你的问题,我会坚持使用文本文件并在将消息吐出到磁盘之前缓冲消息。

答案 2 :(得分:4)

为什么要发明轮子呢?您可以查看MS企业库日志记录块。

答案 3 :(得分:2)

绝对不是xml。

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

除非你手动将节点附加到xml文件,否则你将失去大部分xml优势。

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

这样您也可以要求用户查看(如果您通过电话协助他)。

如果它不是元日志,如上所述,换句话说,如果它与程序本身有任何关系,你可能需要分析 - 保持数据库。

答案 4 :(得分:0)

关于文件与数据库,由您自行决定。

文件日志提供了更高的性能,但却很难访问。

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

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

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

答案 5 :(得分:0)

对于我的应用程序,我选择写入db。以这种方式读取日志更容易(对我而言)。但是我不像有些人那样疯狂,我只记录我需要记录的东西而不是别的。

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

答案 6 :(得分:0)

如果您正在处理ASP.NET,ELMAH是另一个很好的日志记录工具。这显然是微软的Scott Hanselman uses

需要一些additional code才能使它与ASP.NET MVC的HandleError属性一起使用。

答案 7 :(得分:-2)

NLog和log4net都提供了丰富的日志记录API,但它们都没有解决您在管理和分析日志文件中的所有数据时所面临的挑战。

如果您愿意考虑商业工具,请查看GIBRLATAR - 它适用于NLoglog4net,并且还会收集有用的performance metrics。最重要的是,GIBRALTAR provides great tools for managing and analyzing logs