NuGetからインストールします。 Visual Studioなら「ソリューションエクスプローラー」を右クリックして「NuGetパッケージの管理」から「NLog」を検索してインストールします
NLogを使いたいクラスにプロパティ logger をセットします。
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
ログへ出力します
logger.Info( "情報ログ" );
logger.Debug( "デバッグログ" );
logger.Trace( "トレースログ" );
ログにはレベルが存在します。レベルによって処理を分けたりするためです。
(エラーの時は別ファイルに保存したり、エラーの時はメールを送信したりといった感じです。)
(NLogのログレベル。上から順に需要)
logger.Fatal("致命的レベル");
logger.Error("エラーレベル");
logger.Warn("警告レベル");
logger.Info("情報レベル");
logger.Debug("デバッグレベル");
logger.Trace("トレースレベル");
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">
<targets>
<target name="normal"
xsi:type="File"
encoding="UTF-8"
lineEnding="LF"
fileName="${basedir}/logs/event.log"
layout="[${longdate}] [${uppercase:${level:padding=5}}] ${callsite}() [${message}] ${exception:format=tostring}"
archiveNumbering="Date"
archiveFileName="${basedir}/logs/archive/{#}-event.log"
archiveEvery="Day" archiveDateFormat="yyyyMMdd"
maxArchiveFiles="7" />
<target name="error"
xsi:type="File"
encoding="UTF-8"
lineEnding="LF"
layout="[${longdate}] [${uppercase:${level:padding=5}}] ${message} - ${callsite}() ${exception:format=tostring}"
fileName="${basedir}/logs/error.log"
archiveNumbering="Date"
archiveFileName="${basedir}/logs/archive/{#}-error.log"
archiveEvery="Day" archiveDateFormat="yyyyMMdd"
maxArchiveFiles="7"/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="normal" />
<logger name="*" minlevel="Trace" writeTo="normal" />
<logger name="*" levels="Error,Fatal" writeTo="error"/>
</rules>
</nlog>
${basedir} というのが出てきますが、これは AppDomain.CurrentDomain.BaseDirectory の事です。
場所がわからない場合は次のようにして確認してみてください。
Debug.WriteLine( AppDomain.CurrentDomain.BaseDirectory );
DB処理など try catch したい場合は次のように記述します
try
{
logger.Info( "DB処理 - 開始" );
// ここにDB処理
logger.Info( "DB処理 - 正常完了" );
}
catch (Exception ex)
{
logger.Error( ex );
throw;
}