Windowsアプリケーションの例外を Trace 経由で EventLog に記録

ちょっとしたアプリケーション、主に定期的に起動するものについては、例外の記録を Trace 経由で EventLog に記録するようにしてみている。Trace 経由なので必要に応じて直接ファイルに出力したりメール送信したりすることも可。

メインプログラム

using System;
using System.Diagnostics;

namespace SampleApplication
{
    public enum エラーコードenum
    {
        unknown = 0,
        エラーコード一般 = 1,
    }

    internal class Program
    {
        public static readonly TraceSource appTrace = new TraceSource("MainTraceSource");

        private static void Main(string[] args)
        {
            try
            {
                なにか実行();
            }
            catch (Exception ex)
            {
                string エラーメッセージ = ex.ToString();
                const エラーコードenum エラーコード = エラーコードenum.エラーコード一般;
                appTrace.TraceEvent(TraceEventType.Error, (int) エラーコード, エラーメッセージ);
                throw;
            }
        }
    }
}

App.config

<configuration>
 <system.diagnostics>
   <sources>
     <source name="MainTraceSource" switchName="DefaultSwitch">
       <listeners>
         <add name="eventListener"/>
         <remove name="Default"/>
       </listeners>
     </source>
   </sources>
   <sharedListeners>
     <add name="eventListener" type="System.Diagnostics.EventLogTraceListener" initializeData="SampleApplication"/>
   </sharedListeners>
    <switches>
     <add name="DefaultSwitch" value="Information"/>
   </switches>
 </system.diagnostics>
</configuration>

EnterpriseLibrary を使うかどうか少し悩みつつ、そこまででもないかなーと思うものは .NET Framework 2.0 の範囲内で作る方が使い回しがしやすい気がしている。

Microsoft TechNet Forums Use of HealthMonitoring in non-Web apps ASP.NET の場合には HealthMonitoring を使える。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。