当前位置: 首页 > 编程语言 > C#

如果log4net停止记录如何接收事件分享

时间:2023-04-10 11:49:48 C#

如果log4net停止记录如何接收事件log4net太擅长不抛错了。我正在尝试创建某种处理程序,如果log4net无法启动或死机并且无法再记录,则会触发该处理程序。我知道应用程序设置键可以打开log4net的内部调试(log4net.Internal.Debug)。我不需要所有的调试信息,只是log4net有问题。有没有人有办法在log4net中以编程方式捕获和处理错误?好吧,log4net会让你很难做到这一点,因为它会(按设计)抑制在日志记录操作期间抛出的异常。这是因为构建系统不应由于格式化日志消息的错误而失败。值得尝试非常简单的图案布局,因为有时它会在图案布局中使用%P{XYZ}元素,如果相应的属性设置不正确,这可能会导致问题。如果使用简单的模式布局一切都按预期工作,您可以一次添加一个您需要的内容,看看您是否可以通过这种方式查明问题。可能对您有用的是为每个附加程序创建一个实现IErrorHandler的类,然后将每个附加程序配置为使用自定义错误处理类。这应该比启用log4net.Internal.Debug给你更多的控制权。我刚刚尝试了这个并且它有效(请注意我的示例Logger是在其他地方定义的log4net记录器-这背后的目的是从SMTPappender捕获错误并将它们记录到文件中):usingSystem;使用log4net.Core;命名空间测试{publicclassSmtpErrorHandler:IErrorHandler{publicvoidError(stringmessage){Logger.Log.Error(message);}publicvoidError(stringmessage,Exceptionex){Logger.Log.Error(message,ex);}publicvoidError(stringmessage,Exceptionex,ErrorCodeerrorCode){Logger.Log.Error(String.Format("{0}{1}Errorcode:{2}",message,Environment.NewLine,errorCode),ex);我在哪里配置我的附加程序(当然你也可以在配置中这样做):emailAppender.ErrorHandler=newSmtpErrorHandler();我们创建了自己的自定义类来实现Logger。Log.Error...如果抛出异常或出现问题,我们会将原始错误和异常写入Windows事件日志。在分析错误时,用户不仅要向我们发送日志文件,还要向我们发送事件日志。我们创建了一个工具,可以自动导出事件日志并将所有可用的Log4net日志文件压缩到一个zip文件中。如果您使用SCOM(SystemCenterOperationsManager)等监控工具,您可以将其设置为监控日志文件,如果超过n小时/天没有进行更改,则提醒您。以上是C#学习教程:如果log4net停止录制,如何接收事件分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: