【问题标题】:NLog: Force BufferingTargetWrapper to empty on AppDomain UnhandledExceptionNLog:强制 BufferingTargetWrapper 在 AppDomain UnhandledException 上清空
【发布时间】:2016-11-26 09:15:41
【问题描述】:

我在我的应用程序中配置了 NLog 以使用 BufferingTargetWrapper 发送带有 MailTarget 的电子邮件。

我遇到的问题是我找不到强制 NLog 在应用程序退出未处理异常之前清空 BufferingTargetWrapper 的方法。

我尝试从当前应用程序域的 UnhandledException 事件中调用 LogManager.Flush()LogManager.DisableLogging(),但它无法正常工作。

我需要做什么才能让它发送电子邮件?

【问题讨论】:

  • 你在使用 PostFilteringWrapper 吗?我真的很想看看你的 .nlog 或编程配置。
  • 我认为要么有一个额外的线程与缓冲区一起运行,它没有得到任何时间片,要么有一个需要(一些)时间的挂起计时器。你试过一些 Threading.Thread.Speep(x) 吗?

标签: c# nlog unhandled-exception


【解决方案1】:

您可以调用 BufferingTargetWrapper 并强制它写入日志。奇怪的是 LogManger.Flush 不起作用。

var buffWapper =
            LogManager.Configuration.FindTargetByName("BufferingTargetWrapper") as BufferingTargetWrapper;
        if (buffWapper != null)
            buffWapper.Flush();

var buffWapper =
            LogManager.Configuration.FindTargetByName("BufferingTargetWrapper") as BufferingTargetWrapper;
        if (buffWapper != null)
        {
            buffWapper.BufferSize = 1;
            buffWapper.Flush();
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2019-09-30
    • 2012-12-22
    • 2011-04-07
    • 2012-11-16
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多