C# で EventLog を出力する方法

0 件のコメント

現在、イベントログには大きく2種類あるようです。 「Windowsログ」と「アプリケーションとサービスログ」。 ここでは古くからある「Windowsログ」の出力方法をまとめます。

イベントログの種類

上述した通り、イベントログは「Windowsログ」と「アプリケーションとサービスログ」の2種類があります。 このうち Windowsログ はさらに、大きく3種類 + カスタムログ に分類されます。

イベントログの種類

  • Windows ログ
    • アプリケーションログ
    • セキュリティログ
    • システムログ
    • カスタムログ
  • アプリケーション と サービス ログ
    • 各アプリケーション または サービス ごと

※セキュリティログは読み取り専用

ログレベルの種類

Windowsログのログレベルは EventLogEntryType に定義されます。 具体的には、以下の5種類が設定できます。

  • Error
  • Warning
  • Information
  • SuccessAudit
  • FailureAudit

イベントログ出力のサンプルコード

イベントログを出力する場合、EventLog クラス を利用します。 …が、あらかじめ イベントソース が実行環境に登録されていないと正しく動作しません。 ここでは、イベントログが登録されていなかった場合でも自動で登録してしまうサンプルコードを記載しています。 あらかじめ登録しておく方法は こちら に記載しています。 ちなみに、イベントソースの登録には管理者権限が必要なので、以下のサンプルコードを管理者権限なしで実行すると10行目および12行目で例外が発生します。

using System.Diagnostics;

public class Program
{
    public static void Main(string[] args)
    {
        var source = "SampleApplication";
        var message = "Test App EventLog message sample.";

        if (!EventLog.SourceExists(source))
        {
            EventLog.CreateEventSource(source, string.Empty);
        }

        EventLog.WriteEntry(source, message, EventLogEntryType.Error);
    }
}