3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NLog設定ファイルの記述方および配置場所

Last updated at Posted at 2020-03-16

はじめに

ロギングのフレームワークにNLogを使おうと思い調べてみたのだが、使い方を簡単に説明しているページが検索上位にきていてリファレンスとして使えるようなページが見つからなかったので、自分のメモ用にこのブログを作成します。
公式のwikiを要約した部分が多いので、英語に抵抗のない人はそちら(もしくはこのあたり)を参考にしたほうが良いです。

NLogの設定ファイルに関して

NLogの設定ファイルとして、以下のような内容の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">

  <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形式の実行ファイルの場合

  1. アプリケーションの構成ファイル(通常 application.exe.config)
  2. 実行ファイルと同じフォルダに配置された.exe.nlogファイル
  3. 実行ファイルと同じフォルダに配置されたNLog.configファイル(★上記の例はこれ)
  4. 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セクションを追記すればよい。

app.config
<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は特別に指定しない限りケースインセンシティブ(大文字小文字を区別しない)となっている。

3
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
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?