我有一个当前使用log4net的C#应用程序,其中新要求需要记录用户活动必须,如果没有发生日志记录,则应用程序必须停止。开箱即用,log4net是"不可靠"并且不会显示运行时异常。可以在不更改源代码的情况下覆盖它吗?
According to the documentation(and 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以保证如果发生异常,它将在运行时出现?
答案 0 :(得分:0)
不,你不能,log4net保证写入日志消息。因此,log4net无法记录您的要求中的用户活动记录。当您考虑更改log4net源代码以删除它时,请不要启动。有很多地方可以消除异常,使新的日志系统更加可靠。只需将logmessages直接写在您想要的位置,并且由于您的要求,您将永远不会使用log4net为您提供过滤/不同的appender /日志级别等功能。