【ハウツー】
エラー発生時に例外情報をログ出力することが良くあります。そのコード例を見てみましょう。
//エラーを発生させる
try {
int i = 0;
i = 1 / i;
} catch (Exception ex) {
//例外のログを出力
_logger.ErrorException("0除算エラー" , ex);
}
例外情報を出力する場合、NLogではErrorExceptionのようなExceptionで終わるメソッドを呼び出します。第1引数には出力するメッセージ、第2引数にはExceptionクラスを指定します。さらに、ターゲットのlayout属性を下記のように変更します。
<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の設定例を紹介しておきます。
<?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に興味を持たれた方はダウンロードして試してみてはいかがでしょうか。
| 理研、脳・脊髄形成に必要な神経板湾曲の仕組みを解明 [20:16 5/25] |
| 京大、「慢性閉塞性肺疾患」患者の労作時呼吸困難は鍼治療が有効と実証 [20:08 5/25] |
| 120Hz SHVカメラ用イメージセンサーを使った撮像装置 - SHVフルスペック化へ [18:10 5/25] |
| 京大、視覚による物体認知は前頭前野からのトップダウン信号が重要と確認 [17:45 5/25] |
| 製品数の拡大だけでなくBCPの展開なども含めた総合力で事業の強化を図るTI [17:25 5/25] |
|
[SKE48]松井玲奈、17人ランクインで手応え「飛躍できている」 握手会に1万2000人 [13:12 5/27] ホビー |
|
【レポート】【2010年非オタ編】成功したと思う歴代深夜アニメランキング [13:00 5/27] ホビー |
|
[東京スカイツリータウン]1/2000の模型が登場 スカイツリーやオフィス、駅など精巧に再現 [12:00 5/27] ホビー |
|
【連載】これだけは要チェック! TOEIC(R)単語帳 第106回 今回のお題は…「afterward」 [12:00 5/27] キャリア |
|
【レポート】駆け出しイラストレーターのでこ、自分のDTPスキル不足を憂うの巻 [12:00 5/27] クリエイティブ |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。