C#イベントログの汎用実装 一例

2009/12/02 17:49Update
TAGS: C# | イベントログ | EventLog

Syboos.jp編集長

C#プログラムの実行情報やエラーメッセージなどをWindows OSに標準で搭載されている「イベント ビューア」に登録する方法について。

以下はC#言語の汎用的な実装一例です。

イベントログに登録 C#実装例


using System;
using System.Collections.Generic;
using System.Text;

using System.Diagnostics;
using System.Configuration;
using System.IO;
using System.Web;

namespace Common.Log
{
    /// <summary>
    /// イベントログ クラス
    /// @author: syboos.jp
    /// </summary>
    public class EventLogger
    {
        private const String EVENT_LOG_SOURCE = "MyEventLogSource";
        private const String EVENT_LOG_NAME = "MyEventLog";

        private static EventLogger instance = new EventLogger();

        /// <summary>
        /// コンストラクタ
        /// </summary>
        private EventLogger()
        {
            if (!EventLog.SourceExists(EVENT_LOG_SOURCE))
            {
                EventLog.CreateEventSource(EVENT_LOG_SOURCE, EVENT_LOG_NAME);
            }
        }

        /// <summary>
        /// インスタンス取得
        /// </summary>
        public static EventLogger Instance
        {
            get { return instance; }
        }

        /// <summary>
        /// リクエスト・イベント・ログ
        /// </summary>
        public void LogRequest()
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(HttpContext.Current.Request.Url.ToString());
            sb.Append(" / ");
            sb.Append(DateTime.Now.ToString());
            sb.Append(" / ");
            sb.Append(HttpContext.Current.Request.UserAgent.ToString());

            EventLog.WriteEntry(EVENT_LOG_SOURCE, sb.ToString(), EventLogEntryType.Information);
        }

        /// <summary>
        /// エラー・イベント・ログ
        /// </summary>
        /// <param name="msg"></param>
        public void LogError(String msg)
        {
            logEvent(msg, EventLogEntryType.Error);
        }

        /// <summary>
        /// インフォメーション・イベント・ログ
        /// </summary>
        /// <param name="msg"></param>
        public void LogInfo(String msg)
        {
            logEvent(msg, EventLogEntryType.Information);
        }

        /// <summary>
        /// 指定するメッセージ・イベントタイプでイベントログに書き込み
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="type"></param>
        private void logEvent(String msg, EventLogEntryType type)
        {
            EventLog.WriteEntry(EVENT_LOG_SOURCE, msg, type);
        }
    }
}


呼び出し例:
EventLogger.Instance.LogRequest();    //リクエスト情報をイベントログに登録
EventLogger.Instance.LogError("エラー情報・・・");    //エラー情報をイベントログに登録

.

イベントログの表示


[スタート]メニュー
⇒ [コントロール パネル]
⇒ [管理ツール]
⇒ [システムツール]
⇒ [イベント ビューア]


または
[マイコンピュータ]を右クリック
⇒ [管理]
⇒ [システムツール]
⇒ [イベント ビューア]

などの方法でイベントログを表示することができます。

Sponsored Link