繁体   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