簡體   English   中英

Log4Net停止記錄

[英]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. 

我承認,它不是很有幫助,但似乎並沒有按照您的想法做。 您必須正確處理應用程序中的應用程序異常,並自己記錄消息以在日志中查看它。

這里還有另一個問題可能會提供其他線索。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM