可以制作log4net"可靠"外部表面异常?

时间:2014-06-23 15:31:19

标签: c# log4net

我有一个当前使用log4net的C#应用​​程序,其中新要求需要记录用户活动必须,如果没有发生日志记录,则应用程序必须停止。开箱即用,log4net是"不可靠"并且不会显示运行时异常。可以在不更改源代码的情况下覆盖它吗?

According to the documentationand this related question),log4net不会也不应该表示异常:

  

没有。 log4net不可靠。这是一种尽力而为的故障停止日志记录   系统

     

通过失败停止,我们的意思是log4net不会引发意外   运行时的异常可能导致应用程序崩溃。   如果由于任何原因,log4net会抛出未捕获的异常(除了   可能抛出的ArgumentException和ArgumentNullException),   请发送电子邮件至log4net-user@logging.apache.org邮件   名单。未捕获的异常作为严重错误处理   立即关注。

     

此外,log4net不会还原为System.Console.Out或   System.Console.Error未打开其指定的输出流时,   不可写或变满。这样可以避免破坏其他情况   因为日志记录失败而泛滥用户终端的工作程序。   但是,log4net将向System.Console.Error输出单个消息   和System.Diagnostics.Trace表示无法进行日志记录   进行。

是否可以配置或包装log4net以保证如果发生异常,它将在运行时出现?

1 个答案:

答案 0 :(得分:0)

不,你不能,log4net保证写入日志消息。因此,log4net无法记录您的要求中的用户活动记录。当您考虑更改log4net源代码以删除它时,请不要启动。有很多地方可以消除异常,使新的日志系统更加可靠。只需将logmessages直接写在您想要的位置,并且由于您的要求,您将永远不会使用log4net为您提供过滤/不同的appender /日志级别等功能。