はじめに
ロギングのフレームワークにNLogを使おうと思い調べてみたのだが、使い方を簡単に説明しているページが検索上位にきていてリファレンスとして使えるようなページが見つからなかったので、自分のメモ用にこのブログを作成します。
公式のwikiを要約した部分が多いので、英語に抵抗のない人はそちら(もしくはこのあたり)を参考にしたほうが良いです。
NLogの設定ファイルに関して
NLogの設定ファイルとして、以下のような内容の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">
<targets>
<target xsi:type="File" name="targateName" fileName="logfile.log" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
設定ファイルの場所
設定ファイルは、以下のような手順で探索されます
.exe形式の実行ファイルの場合
- アプリケーションの構成ファイル(通常 application.exe.config)
- 実行ファイルと同じフォルダに配置された.exe.nlogファイル
- 実行ファイルと同じフォルダに配置されたNLog.configファイル(★上記の例はこれ)
- NLog.dllと同じフォルダに配置されたNLog.dll.nlogファイル(GACに登録されているdllでない場合に限る)
ASP.NETアプリの場合
1.web.configファイル
2.web.configと同じフォルダに配置されたweb.nlogファイル
3.アプリケーションディレクトリに配置されたNlog.configファイル
4.Nlog.dllと同じフォルダに配置されたNlog.dll.nlogファイル(GACに登録されているdllでない場合に限る)
configファイルの書式
NLog.configの場合
NLog.configファイルを使う場合のファイル書式は、上にある例のように記述する。
applicaton.exe.configなどに記述する場合
application.exe.configやweb.config内にNLogの構成を記述する場合は、以下のようにconfigSectionsセクションで新しくnlogセクションを定義し、後続のセクションとしてnlogセクションを追記すればよい。
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
...
<nlog
xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
</rules>
</nlog>
</configuration>
NLogのxmlは特別に指定しない限りケースインセンシティブ(大文字小文字を区別しない)となっている。