[英]Log4Net Stops logging
我有一個全天候運行的數據轉換和同步實用程序。
如果應用程序暫時停止運行,這沒什么大不了的,但是它必須記錄其操作。 我寧願該應用程序失敗也不願它不登錄。 我遇到了一些涉及該主題的帖子,但是我無法獲得任何可行的解決方案。
我需要設置一種方法來停止應用程序運行(取決於應用程序設置),並在Log4Net停止記錄時發出警告電子郵件。
我有這個給我的appender:
<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
感謝您的任何幫助。
我實際上還沒有使用過log4net errorHandlers,可能在這里完全關閉了,但是我的直覺告訴我errorHandler旨在配置log4net異常(不是應用程序異常)的處理,並且關於該主題的信息很少,以至於虛假關於errorHandler參數的博客文章可能使您感到困惑。 從SDK文檔中:
Implements log4net's default error handling policy which consists of emitting a
message for the first error in an appender and ignoring all subsequent errors.
我承認,它不是很有幫助,但似乎並沒有按照您的想法做。 您必須正確處理應用程序中的應用程序異常,並自己記錄消息以在日志中查看它。
這里還有另一個問題可能會提供其他線索。
我找到了。
這是Log4Net的iErrorHandler:
http://dotnetforyou.wordpress.com/2011/02/18/debugging-log4net-when-it-stops-logging/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.