我应该从log4net扩展类,创建自定义记录器

时间:2010-11-03 04:34:00

标签: c# log4net error-logging logging

我正在做一些与众不同的事情。

我有一个应用程序,它作为Windows服务运行。

它的作用是,它监视一个文件夹,当有一个新文件放入该文件夹时,应用程序将对该文件执行某些操作。 每当处理一个文件时出错。我需要创建一个文本文件,并将错误/异常信息放入该文本文件中。 (后来我可以用这个文件做点什么)

所以有类似的东西

FileWatch, when there is a new file, do following :
     try
     {
         processing file
     }
     catch(Exception ex)
     {
         MyLogger write exception message into one new text file
     }

到目前为止我是如何做到的。我创建了一个类,例如MyLogger,每当我新建一个MyLogger时,它会创建一个文本文件(名称很重要,需要是一个特定的格式),并且MyLogger中有一个方法“WriteError(字符串消息)”,它写道将文字写入该文件。

因为我在我的应用程序中使用了log4net。你认为我应该修改我的记录器,从log4net扩展一些类,这样我可以获得一些好处吗? (不知道我会得到什么样的好处,但log4net是一个很好的日志框架,它处理文本文件的方式可能有我不知道的事情)

由于

5 个答案:

答案 0 :(得分:1)

之前我已经创建了log4net包装器。我发现以这种方式开始很方便,因为您并不总是知道项目开始时的日志记录要求。我的规则是log4net库只能从我自己的“logging”命名空间引用。这样,应用程序代码只调用包装器,包装器是log4net功能的唯一联系点。

从长远来看,可能值得投资建立自己的记录器。如果你正确封装log4net,你应该可以很容易地进行这种升级,而不必更改你的代码。

答案 1 :(得分:1)

如果是,

log4net或任何其他通用记录器都很有帮助 1)您希望在应用程序的许多位置拥有一致的日志记录工具;和/或
2)您希望能够自定义日志记录格式,级别等。

从您的描述中可以看出,您的应用中只有一个点需要以特定方式记录异常。如果这是正确的,您可能无法从创建自定义记录器中获益 - 只需编写一个方法,以您需要的方式将异常记录到文件中。

如果我误解了您,并且需要通用记录器(即1)或2),则通过继承记录器或创建包装器来扩展log4net是可以的。

答案 2 :(得分:0)

为什么不使用.NET框架中的Trace Listeners?它们提供了日志记录网络的许多好处,而无需包含外部框架。

优点包括集中日志管理以及将输出日志定向到一个或多个源(如控制台窗口,文本文件或Windows事件日志)的功能。

答案 3 :(得分:0)

您应该花一些时间创建自己的记录器,完全符合您的要求。这将是最好的方式。也非常简单,您可以完全控制自定义,这样您就可以像log4net一样使输出外观。您可以通过Google记录样本并开始修改该样本。

答案 4 :(得分:0)

我不确定是否会为此目的使用日志框架。我的印象是在异常情况下编写此文本文件是业务流程的一部分。日志记录有不同的用途,可以在不影响业务流程的情况下关闭......