2016-11-15 4 views
4

У меня есть файл конфигурации NLog, как показано ниже. По некоторым причинам NLog нуждается в асинхронной обработке.как проверить, завершил ли NLog протоколирование сообщений из своей очереди в асинхронном режиме?

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true"> 
    <targets async="true"> 
    <target name="file" xsi:type="File" fileName="c:/log1.log" archiveEvery="Day" archiveNumbering="Rolling"/> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Info" writeTo="file"/> 
    </rules> 
</nlog> 

Я хотел бы знать, есть ли какой-либо метод я могу использовать, чтобы проверить, если NLog закончил протоколирования сообщений, то, как показано ниже:

for (int i = 0; i <= 9999; i++) 
{ 
    LogManager.GetCurrentClassLogger().Info("this is for testing " + i); 
} 
while(!LogManager.finished()) // check if finished or not 
{ 
    Console.Write("."); 
} 
Console.Write("done"); 

Спасибо.

Look

ответ

0

Существует не булево вы могли бы проверить, но вы могли бы назвать flush - когда этот вызов выполняется, регистрация заканчивается.

например.

for (int i = 0; i <= 9999; i++) 
{ 
    LogManager.GetCurrentClassLogger().Info("this is for testing " + i); 
} 
LogManager.Flush(); //flushes all async targets and block until done. There is also an optional timeout. 
Console.Write("done"); 

См LogManager methods

+0

@llook было это где вы искали? – Julian