#はじめに
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
<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フォルダの結果
- ログ出力実行前
- ログ出力実行後
currentFile(20191012.log)とarchiveFileの7ファイルを残して削除ができました。