【ハウツー】

ロギングライブラリ「NLog」で簡単ログ出力

3 例外出力とNLog.configサンプル

    青木淳夫  [2010/03/19]

    例外のログ出力方法

    エラー発生時に例外情報をログ出力することが良くあります。そのコード例を見てみましょう。

    例外情報をログ出力するコード(C#)

    //エラーを発生させる
    try {
        int i = 0;
        i = 1 / i;
    } catch (Exception ex) {
        //例外のログを出力
        _logger.ErrorException("0除算エラー" , ex);
    }
    
    例外情報を出力する場合、NLogではErrorExceptionのようなExceptionで終わるメソッドを呼び出します。第1引数には出力するメッセージ、第2引数にはExceptionクラスを指定します。さらに、ターゲットのlayout属性を下記のように変更します。

    例外情報をログ出力する設定例(NLog.config)

    <target name="file" xsi:type="File"
    layout="${message} ${exception:format=tostring}"    
    fileName="${basedir}/log.txt" />
    

    layout属性はログメッセージのレイアウトを設定します。デフォルトは「${longdate}|${level:uppercase=true}|${logger}|${message}」ですが、ここでは「${message} ${exception:format=tostring}"」と変更しています。これで、ExceptionクラスにToStringメソッドを実行した結果がログに出力されます。

    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>
    
        <!--ファイル(10KByte毎ローテーション)-->
        <target name="file" xsi:type="File" 
        layout="${longdate} ${level:uppercase=true:padding=-5} [${threadid}] ${logger} - ${message} ${exception:format=tostring}"
        fileName="${basedir}/logs/log.txt" 
        archiveFileName="${basedir}/logs/${date:format=yyyyMMdd}/log.{###}.txt"
        archiveAboveSize="10240"
        archiveNumbering="Sequence"
        maxArchiveFiles="20" />
    
        <!--フォームのリッチテキストコントロール(色つき)-->
        <target name="rich" xsi:type="RichTextBox"
        formName="Form1"
        controlName="richTextBox1"
        useDefaultRowColoringRules="true" />
    
        <!--デバッガー/出力ウィンドウ-->
        <target name="debugger" xsi:type="Debugger"/>
    
        <!--「致命的」という文字を含む時のみ出力するフィルタ-->
        <target name="eventlog" xsi:type="FilteringWrapper" 
            condition="contains('${message}','致命的')">
            <!--イベントログ-->
            <target xsi:type="EventLog" 
                source="NLog Sample" 
                log="Application" />
        </target>
    
    </targets>
    
    <!--出力ルールの設定-->
    <rules>
        <logger name="Sample.*" minlevel="Info" writeTo="file,rich,debugger" />
        <logger name="*" levels="Error,Fatal" writeTo="eventlog" />
    </rules>
    
    </nlog>
    

    難しく見えるかもしれませんがVSのインテリセンスを活用すると比較的簡単に記述できます。詳細を知りたい場合は、インストールフォルダのサンプルとマニュアルを参考にすると良いでしょう。

    実行結果(リッチテキストボックスにログが出力される)

    以上、ログ出力ツールのNLogを紹介してきました。NLogは導入が簡単なうえに、開発で十分に活用できる機能が備わっています。NLogに興味を持たれた方はダウンロードして試してみてはいかがでしょうか。

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン