
VisualStudio2022を用いた上での使い方になります
使用したいアプリでnugetを使って「NLog」をインストールします 検索した際に、他にもNLogに関係しそうなパッケージが表示されますが、「NLog」以外はインストールしないようにします
NLogがどう動くかを設定するためにアプリケーション構成ファイル(.config)を新規作成します 名前はNLog.config
にします NLog.config
の内容は以下のように書きます
<?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"
autoReload="true"
throwExceptions="false">
<targets>
<target
name="logfile"
xsi:type="File"
fileName="Logs/${date:format=yyyyMMdd}.log"
layout="${longdate} [${uppercase:${level:padding=-5}}] ${message} ${exception:format=tostring}"
encoding="UTF-8" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logconsole" />
<logger name="*" minlevel="Trace" writeTo="logfile" />
</rules>
</nlog>
内容の詳細
XML宣言とNLog設定: ファイルは標準のXML宣言で始まり、ルート要素<nlog>
を定義しています。NLogのスキーマが指定され、autoReload
がtrue
に設定されています(ファイルが変更された場合に設定が自動的に再読み込みされるようにするため)、throwExceptions
がfalse
に設定されています(NLogが例外を投げるかどうかを制御するため)。
ターゲットセクション:
<targets>
要素は、ログを書き込む場所を定義する場所です。
このセクション内には、以下の設定を持つ<target>
要素が定義されています:
name="logfile"
:ターゲットの名前です。
xsi:type="File"
:これはファイルターゲットであることを示し、ログがファイルに書き込まれることを意味します。
fileName="Logs/${date:format=yyyyMMdd}.log"
:ログファイル名のパターンを指定し、日付形式が含まれています。これは新しいログファイルが毎日作成されることを意味します。
layout="${longdate} [${uppercase:${level:padding=-5}}] ${message} ${exception:format=tostring}"
:ログメッセージの形式を定義します。長い日付、大文字のログレベル、ログメッセージ、文字列としてフォーマットされた例外が含まれます。
encoding="UTF-8"
:ログファイルのエンコーディングをUTF-8に設定します。
ルールセクション:
<rules>
要素は、ログ記録のルールを定義する場所です。このセクションの始まりの部分のみがプレビューで見えます。通常、記録するログレベル(Trace、Debug、Info、Warn、Error、Fatalなど)とそれらを書き込むターゲットを指定する<logger>
要素が含まれます。
作成したNLog.config
のプロパティを確認して、詳細の「出力ディレクトリにコピー」を「新しい場合はコピーする」に変更します
これで実行を行えば自動的にログが出力されるようになっているはずです。
参考資料
NLog.Configのnugetパッケージがあるけど、それは必要なくなったという話 (パッケージを使用するのではなく、自前でNLog.configファイルを用意する必要がある)
C# NLog.Configパッケージが非推奨になった!? – Qiita
【WPF/C#】NLog.Configパッケージが非推奨になってた。NLog.Configファイル作成時の注意点の備忘録【NLog】