我正在做一些与众不同的事情。
我有一个应用程序,它作为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是一个很好的日志框架,它处理文本文件的方式可能有我不知道的事情)
由于
答案 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)
我不确定是否会为此目的使用日志框架。我的印象是在异常情况下编写此文本文件是业务流程的一部分。日志记录有不同的用途,可以在不影响业务流程的情况下关闭......