2017-02-24 46 views
0

我想实现在记录特定文本时引发异常的假appender。显然,使用log4net是非常困难的。 我试图实现从AppenderSkeleton派生的我自己的Appender。 还将ErrorHandler更改为重新抛出异常的错误处理程序。但是没有任何东西能够阻止log4net捕获所有异常。如何禁用log4net捕获所有异常?

有没有办法阻止log4net做到这一点?最好以编程方式。

谢谢

+0

只是为了澄清,你的意思是说你只想记录错误级别和更高的级别,而不记录更低级别的异常? – Jacobr365

+0

我不认为有这样做的方法。 Log4net会尝试确保在记录期间发生的任何错误都不会影响程序。请参阅https://logging.apache.org/log4net/release/faq.html#reliability – sgmoore

回答

1

你不能这样做。 Log4net不会通过设计引发异常。按照设计,log4net不会与正在运行的程序交互。

log4net是一个可靠的日志记录系统吗? No. log4net不可靠。它 是一个尽力而为和故障停止记录系统。通过故障停止,我们的意思是 log4net不会在运行时抛出意外的异常 可能导致您的应用程序崩溃。如果由于某种原因,log4net会抛出一个未捕获的异常(除了ArgumentException和 ArgumentNullException可能被抛出),请发送电子邮件至 [email protected]邮件列表。未捕获的异常 被视为需要立即关注的严重错误。此外,log4net将不会恢复到System.Console.Out或System.Console.Error 当其指定的输出流未打开,不可写或 变满。这样可以避免由于日志记录失败而导致用户终端淹没其他工作程序 。但是,log4net 将向System.Console.Error和 System.Diagnostics.Trace输出一条消息,指示无法执行日志记录。

+0

感谢您的回复。至少我知道没有解决方案。 –