我有一个全天运行的实用程序,用于数据转换和同步。
如果应用程序暂时停止运行,这没什么大不了的,但它必须记录它的操作。我宁愿应用程序失败也不愿让它不记录。我遇到了一些涉及该主题的帖子,但我无法获得任何解决方案。
我需要设置一种方法来阻止应用程序运行(取决于应用程序设置)并在 Log4Net 停止记录时发送警告电子邮件。
我的附加程序有这个:
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<errorHandler type="SomeApp.PresentationLayer.Log4NetErrorHandler" />
<file type="log4net.Util.PatternString" value="H:\SomeApp-%property{RegNo}-log.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<header value="[START]" />
<footer value="[END]" />
<conversionPattern value="%date %-5level - %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<!-- <appender-ref ref="A" /> -->
</root>
这是我的错误处理程序:
namespace SomeApp.PresentationLayer
{
class Log4NetErrorHandler : IErrorHandler
{
public bool HandleError(Exception ex)
{
//Trace.TraceError(ex.ToString());
ExceptionUtil.GetAndLogMessage(ex, "Log4Net Error in SomeApp", false, true);
return false;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
// Shield the unknown exception
FaultException faultException = new FaultException(
"Server error encountered. All details have been logged.");
MessageFault messageFault = faultException.CreateMessageFault();
fault = Message.CreateMessage(version, messageFault, faultException.Action);
}
}
}
无论我尝试什么,异常处理程序都不会触发。我将日志文件设置为映射驱动器。在记录时,我断开了驱动器,它永远不会向我的异常处理程序抛出异常。有人看到我错过了什么吗?
我正在使用 c# .net 3.5 log4net 1.2.10
感谢您提前提供任何帮助。