Буферизация логов внутри метода - PullRequest
0 голосов
/ 29 января 2019

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

РЕДАКТИРОВАТЬ Текущая конфигурация Nlog

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="Trace_file"  xsi:type="File" fileName="${basedir}//..//LOGS//Trace//${date:format=dd.MM.yyyy}.log" layout="${longdate}|${uppercase:${level}}|${message}  ${exception:format=tostring,StackTrace}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" maxlevel="Info"  writeTo="Trace_file" />
  </rules>
</nlog>

Пример службы

public class Service1 : IService1
    {
        static Logger logger = LogManager.GetCurrentClassLogger();
        public void DoWork(int param)
        {
            logger.Info($"DoWork start ({param})");
            /*
             * Some logic and log write
             */
            logger.Info($"DoWork end ({param})");
        }
    }

После асинхронного вызова

2019-02-07 16:53:56.9709|INFO|DoWork start (2002)  
2019-02-07 16:53:56.9709|INFO|DoWork start (2004)  
2019-02-07 16:53:56.9709|INFO|DoWork start (2001)  
2019-02-07 16:53:57.0290|INFO|DoWork end (2002)  
2019-02-07 16:53:57.0370|INFO|DoWork end (2004)  
2019-02-07 16:53:56.9834|INFO|DoWork start (2003)  
2019-02-07 16:53:57.0581|INFO|DoWork end (2003)  
2019-02-07 16:53:57.0761|INFO|DoWork end (2001)  

Что мне нужно

2019-02-07 16:55:11.0714|INFO|DoWork start (2001)  
2019-02-07 16:55:11.0824|INFO|DoWork end (2001)  
2019-02-07 16:55:11.1150|INFO|DoWork start (2002)  
2019-02-07 16:55:11.1236|INFO|DoWork end (2002)  
2019-02-07 16:55:11.1451|INFO|DoWork start (2003)  
2019-02-07 16:55:11.1541|INFO|DoWork end (2003)  
2019-02-07 16:55:11.1907|INFO|DoWork start (2004)  
2019-02-07 16:55:11.2008|INFO|DoWork end (2004)
...