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

C# 创建自定义记录器,我应该从log4net扩展类吗,c#,log4net,error-logging,logging,C#,Log4net,Error Logging,Logging,我在做一些不寻常的事 我有一个应用程序,它作为windows服务运行 它所做的是,它监视一个文件夹,当有新文件放入该文件夹时,应用程序将对该文件执行某些操作。 当处理一个文件时出现错误时。我需要创建一个文本文件,并将错误/异常信息放入该文本文件中。(稍后我可以使用此文件执行某些操作) 所以有类似的事情 FileWatch, when there is a new file, do following : try { processing file

我在做一些不寻常的事

我有一个应用程序,它作为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(string message)”中有一个方法,它会将文本写入该文件

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

谢谢

为什么不使用.NET framework?它们提供了日志网络的许多好处,而无需合并外部框架

好处包括集中式日志管理和将输出日志定向到一个或多个源(如控制台窗口、文本文件或Windows事件日志)的能力。

为什么不从.NET framework使用?它们提供了日志网络的许多好处,而无需合并外部框架


好处包括集中式日志管理和将输出日志定向到一个或多个源(如控制台窗口、文本文件或Windows事件日志)的能力。

您应该花一些时间创建自己的日志程序,以完全满足您的需要。这是最好的办法。这也相当简单,您可以完全控制定制,因此可以使输出的外观与log4net中的一样。您可以在谷歌上搜索日志记录示例并开始修改该示例。

您应该花一些时间创建自己的日志记录程序,以完全满足您的需要。这是最好的办法。这也相当简单,您可以完全控制定制,因此可以使输出的外观与log4net中的一样。您可以在谷歌上搜索日志样本并开始修改它。

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


从长远来看,投资于构建自己的记录器可能是值得的。如果您正确地封装了log4net,您应该能够非常轻松地进行此升级,而无需更改代码。

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


从长远来看,投资于构建自己的记录器可能是值得的。如果您正确地封装了log4net,您应该能够非常轻松地进行此升级,而无需更改代码。

我不确定是否为此使用日志框架。我的印象是,在例外情况下编写此文本文件是您业务流程的一部分。日志服务于一个不同的目的,可以在不影响业务流程的情况下关闭它…

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

log4net或任何其他通用日志记录程序,如果
1) 您希望在应用程序的许多地方都有一个一致的日志记录功能;和/或
2) 您希望能够自定义日志记录格式、级别等

根据您的描述,您的应用程序中似乎只有一个点需要以特定方式记录异常。如果这是正确的,您可能不会从创建自定义记录器中获得任何好处—只需编写一个方法,以您需要的方式将异常记录到文件中即可


如果我误解了您的意思,并且需要通用记录器(也就是说,上面的1)或2)是正确的,那么通过继承记录器或创建包装器来扩展log4net是可以的。

log4net或任何其他通用记录器在
1) 您希望在应用程序的许多地方都有一个一致的日志记录功能;和/或
2) 您希望能够自定义日志记录格式、级别等

根据您的描述,您的应用程序中似乎只有一个点需要以特定方式记录异常。如果这是正确的,您可能不会从创建自定义记录器中获得任何好处—只需编写一个方法,以您需要的方式将异常记录到文件中即可


如果我误解了您的意思,并且需要通用记录器(也就是说,上面的1)或2)是正确的,那么通过继承记录器或创建包装器来扩展log4net是可以的。

我想我关心的是,当出现异常时,我需要创建一个新的文本文件。那些框架能做到这一点吗?我想我关心的是,当出现异常时,我需要创建一个新的文本文件。那些框架能做到这一点吗?我了解如何包装日志框架,但为什么要编写自己的日志?这些框架有太多的特性