NLog: принудительно очистить BufferingTargetWrapper при исключении AppDomain UnhandledException

В моем приложении NLog настроен на использование BufferingTargetWrapper для отправки электронных писем с MailTarget.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ заставить NLog очистить BufferingTargetWrapper перед выходом приложения из необработанных исключений.

Я попытался вызвать LogManager.Flush() и LogManager.DisableLogging() из события UnhandledException текущего домена приложения, но это не работает.

Что мне нужно сделать, чтобы заставить его отправлять электронные письма?


person Superdumbell    schedule 09.03.2010    source источник
comment
Вы используете PostFilteringWrapper? Я бы очень хотел увидеть вашу .nlog или программную конфигурацию.   -  person Mike Post    schedule 14.03.2010
comment
Я думаю, что есть либо дополнительный поток, работающий с буфером, который не получает никакого временного интервала, либо отложенный таймер, которому потребуется (некоторое) время. Вы пробовали Threading.Thread.Speep(x)?   -  person ralf.w.    schedule 05.04.2011


Ответы (1)


вы можете вызвать BufferingTargetWrapper и заставить его записывать журналы. Странно, что LogManger.Flush не работает.

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

or

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