LoginSignup
7
7

More than 3 years have passed since last update.

NLog 日付ログファイルのローテーションを同じフォルダで行う

Posted at

はじめに

NLogでログファイル名を日付にして保存期間ありにしたいときの設定方法です。
NLogのfile targetのドキュメントには、
ローテーションがDateのときは、archiveFileは別のフォルダにしなければいけないと説明があります。
CurrentFileに日付ファイル名を指定して、同じフォルダのままできないかと思い、設定の組み合わせを見つけました。

環境

Windows10 Professional 1903
Microsoft Visual Studio Enterprise 2019 Version 16.3.1
Microsoft .NET Framework Version 4.7.2
Microsoft Visual C# 7.0
NLog for .Net Framework 4.5 ver.4.6.7

Example

NLog.config
  <targets>
    <target xsi:type="File" name="MyFile" fileName="C:\hoge\Log\${date:format=yyyyMMdd}.log"
                layout="${longdate} :${level} ${logger}:: ${message} ${exception}"
                encoding="UTF-8"
            archiveFileName="C:\hoge\Log\{#}.log"
            archiveNumbering="Date"
            archiveDateFormat="yyyyMMdd"
            maxArchiveFiles="7"
            concurrentWrites="true" 
    />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="MyFile" final="true" />
  </rules>

ローテーションのarchiveEvery="Day"を指定しないようにすると、archiveが実行されないで、CurrentFileに日付を指定してもうまくローテーションができました。

logフォルダの結果

  • ログ出力実行前

    logfolder3

  • ログ出力実行後

    logfolder4.png

currentFile(20191012.log)とarchiveFileの7ファイルを残して削除ができました。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7