簡體   English   中英

NLog 創建多個日志文件而不是一個

[英]NLog creates several log files instead of one

我嘗試將 NLog 插入我的項目,並且第一次這樣做,代碼如下所示:

static class Program
{
private static readonly Logger logger = LogManager.GetCurrentClassLogger();

private static void Main(string[] args)
{
    logger.Trace("Enter Main");

    MyClass.DoWork();

    logger.Trace("Exit Main");
}

class MyClass
{
    private static readonly Logger logger = LogManager.GetCurrentClassLogger();

    public static void DoWork()
    {
        logger.Trace("Enter DoWork");

        var mgc = new MyGreatClass();
        var task = mgc.RunAsync(...);

        logger.Trace("Exit DoWork");        
    }
}

class MyGreatClass
{
   private static readonly Logger logger = LogManager.GetCurrentClassLogger();

   async Task<bool> RunAsync()
   {
       logger.Trace("Log something");
       await DoSomethig();
   }
}

Nlog.config文件如下所示:

<targets>
    <target name="file" xsi:type="File" fileName="${basedir}/logdata${date:format=HH-mm-ss}.log" 
      layout="${date:format=HH\:mm\:ss}|${message}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="file" />
  </rules>

但是在記錄時它會創建 3 個不同的日志文件,如何讓 Nlog 只創建和登錄一個文件? 在運行一個應用程序時創建多個日志文件是一種好習慣嗎?

發生這種情況是因為Nlog.config文件中的目標文件名。 每次生成日志消息時,它都會使用以下命令創建一個新的日志文件:

fileName="${basedir}/logdata${date:format=HH-mm-ss}.log"

date:format...部分是對DateTime.Now的調用。 我的代碼也在做同樣的事情。 一旦我在代碼的開頭設置了一個DateTime.Now變量,然后我將該變量作為名稱傳遞到Nlog.config設置中,並且只創建了一個日志文件。

DateTime localDate = DateTime.Now;

string currentDateString = localDate.ToString("yyyyMMdd-hhmmss"); 

fileTarget.FileName = baseDirectory + @"\logs\" + currentDateString + "-LOGS.txt";

使用此布局時,NLog 將每秒渲染一個新文件名:

fileName="${basedir}/logdata${date:format=HH-mm-ss}.log" 

而是考慮這樣做:

fileName="${basedir}/logdata${processinfo:StartTime:format=HH-mm-ss:cached=true}.log" 

然后 NLog 將使用 process-startup-timestamp,它不會每秒都改變。

另請參閱: https ://github.com/NLog/NLog/wiki/ProcessInfo-Layout-Renderer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM