Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【C#】ロギジングライブラリのNLogを使ってみた

仕事でLog出力も備えたアプリを作成する必要があったので、メジャーどころ(?)なNLogを使ってみた。

これは便利!(っていっても他のものを使ったことが無いので、比較的なことはできてないけど)

公式

NLog

www.nuget.org

VisualStudioであれば基本的にNuGetでOKかと。

NuGetからPacage-Installを実施すると、DLLとNLog用コンフィグファイルが最初から作成されます。

参照だけ加えた場合は、NLogコンフィグファイルを別途手動で作成する必要があるので要注意。 以下のような感じになります。

f:id:sugimomoto:20150329153513p:plain

雑感

特に便利そうだなぁと思ったものとしては、公式にも記載されているとおり、出力先の多様さと簡単さだと思う。 Logファイルに出力するもよし、EventLog、E-mail、データベースもサポート。 基本的にはLogファイルで、特殊エラーケースではEventLogとEmailを併用するとかもいいかも。

コード

最初に必ず、NLog.ConfigファイルでLog出力ルールを定義する必要があります。

<?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="logfile" xsi:type="File" fileName="file.txt" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile" />
    <logger name="*" minlevel="Trace" writeTo="logfile" />
  </rules>
</nlog>

ログ出力用のメソッドは6種類。今回はInfoとTraceを定義して、使用してみました。 基本的にはどれも動作は変わらず? 上記XMLのルール付によってそれぞれの動作内容を定義する感じ。

・Fatal ・Error ・Warn ・Info ・Debug ・Trace

C#コードは以下の様な感じ。

using System;
using NLog;

public class MyClass
{
    private static Logger logger = LogManager.GetCurrentClassLogger();

    static void Main(string[] args)
    {
        Console.WriteLine("Start Log Test");

        logger.Trace("Trace Log Test");
        logger.Info("Info Log Test");

    }
}

今回は普通のテキストファイルに出力してみたので、↓のような感じになりますよい。

f:id:sugimomoto:20150329152246p:plain

参考サイト

news.mynavi.jp