C# NLogによるログ設定
■環境
OS:Windows
言語:C♯
DB:SQL Server
フレームワーク:.NET Framework4.8
■NLogをインストール
①「プロジェクト」⇒「NuGetパッケージの管理」⇒「参照」を押下
②「nlog.config」をインストール
■ログ設定ファイルの作成
「NLog」をインストールすると「NLog.config」が作成されるので下記を記述する
①「<targets>」ディレクティブ
・ターゲット名:name="infoLog"
・出力タイプ:xsi:type="File"
⇒ファイルに設定
・ファイルのフルパス:fileName="Logs\info\info.log"
⇒プロジェクト配下の「Logs\info」に「info.log」ファイルを作成
・ファイル内容フォーマット:layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${message}"
⇒「YYYY-MM-DD HH:MM:SS + ログ内容」をフォーマットにする
②「<rules>」ディレクティブ
・ログ名:⇒logger name="*"
・ログレベル:minlevel="Info"
・ログレベル:minlevel="Error"
・書き込み先:writeTo="infoLog"
・書き込み先:writeTo="errLog"
<?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<variable name="myvar" value="myvalue"/>
<targets>
<target name="infoLog" xsi:type="File" fileName="Logs\info\info.log" layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${message}"></target>
<target name="errLog" xsi:type="File" fileName="Logs\error\error.log" layout="${date:format=yyyy-MM-dd HH\:mm\:ss} ${message}"></target>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="infoLog"></logger>
<logger name="*" minlevel="Error" writeTo="errLog"></logger>
</rules>
</nlog>
■ログ用のインスタンスを作成してログを出力
インスタンス作成
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info()等でログを出力
logger.Info("[ログ内容]");
logger.Error("[ログ内容]");
■サンプルソース
下記で作成したソースコードにログ出力を設定する
C# DapperでDB接続する方法(トランザクション編)
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using DbConnection.Models;
using Dapper;
namespace DbConnection.Controllers
{
public class SampleController : ApiController
{
//ログのインスタンス
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public void Get()
{
//接続文字列
//string connectionStr = @"Server=[サーバー名];Database=[データベース名];Trusted_Connection=True;";
string connectionStr = @"Server=localhost;Database=sqlserver;Trusted_Connection=True";
using (var connection = new SqlConnection(connectionStr))
{
//DB接続
connection.Open();
//クエリ
var query = "INSERT INTO test VALUES (@Id, @Name)";
//パラメーター
var param = new Test()
{
Id = 1
, Name = "test1"
};
//トランザクション開始
using (var tran = connection.BeginTransaction())
{
try
{
//クエリ実行
var retCd = connection.Execute(query, param, tran);
//コミット
tran.Commit();
//インフォログ出力
logger.Info("コミット完了");
} catch (Exception e)
{
//ロールバック
tran.Rollback();
//エラーログ出力
logger.Error("エラー内容:" + e);
logger.Error("ロールバック完了");
} finally
{
//明示的なDB切断
connection.Close();
}
}
}
}
}
}