2010-03-09 74 views
2

我在我的應用程序中配置了NLog以使用BufferingTargetWrapper發送帶有MailTarget的電子郵件。NLog:強制BuffDoTargetWrapper在AppDomain上爲空UnhandledException

我遇到的問題是我找不到一種方法來強制NLog在應用程序退出未處理的異常之前清空BufferingTargetWrapper

我嘗試從當前應用程序域的UnhandledException事件中調用LogManager.Flush()LogManager.DisableLogging(),但它沒有縫合工作。

我需要做什麼才能發送電子郵件?

+0

您使用的是PostFilteringWrapper?我真的很想看到你的.nlog或程序化配置。 – 2010-03-14 11:01:24

+0

我認爲有一個額外的線程運行緩衝區,它沒有得到任何時間片或待定時器,這將需要(一些)時間。你嘗試了一些Threading.Thread.Speep(x)? – 2011-04-05 18:39:46

回答

0

您可以調用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(); 
     }