C# でのイベント ログ アプリケーションへの書き込み

Luqman Khan 2023年10月12日
  1. C# でイベント ログ アプリケーションに書き込む
  2. C# でイベント ログ アプリケーションにエントリを書き込む方法
C# でのイベント ログ アプリケーションへの書き込み

Windows イベント ログは、Windows オペレーティング システムによって保存されたシステム、セキュリティ、およびアプリケーションの通知の完全な記録です。 管理者はこれを使用して、システムの問題を検出および診断し、将来の問題について警告します。

C# でイベント ログ アプリケーションに書き込む

まず、イベント ログに書き込むことができることを確認します。 この目的のために、次のコードを使用できます。

構文:

using (EventLog neweventLog = new EventLog("Application"))
{
    neweventLog.Source = "Application";
    neweventLog.WriteEntry("event Log message example", EventLogEntryType.Information, 102, 1);
}

それでは、上記の構文のすべての部分について説明しましょう。

  1. EventLog: Windows イベント ログは、管理者が簡単にアクセスできるため、アプリケーションのエラーや主要なイベントを記録するために使用されます。 Windows イベント ログは、同様のコンソールから管理できます。
  2. neweventLog.Source: 上記のイベント ソースの eventlog キーでは、各ログにイベント ソースと呼ばれるサブキーが含まれています。 つまり、イベントをログに記録するソフトウェアの名前は、イベント ソースと呼ばれます。 アプリケーションの名前またはアプリケーションのサブコンポーネントの名前にすることができます。

C# でイベント ログ アプリケーションにエントリを書き込む方法

イベント ログ エントリを書き込むには、EventLog クラスの次のメソッドを使用できます。

  1. WriteEntry() メソッド
  2. WriteEvent() メソッド

WriteEntry() メソッド

WriteEntry() には、静的メソッドで source パラメータが必要です。 source は、EventLog クラスのコンストラクターで割り当てることもできます。

最初はログ名で、次にローカル マシンとイベント ソース名がコンストラクターで定義されます。

次の 3つのイベント ログ エントリが書き込まれます。

  1. message: WriteEntry() メソッドの最初のパラメーターです。
  2. EventLogEntryType: EventLogEntryType でイベント ログ エントリを定義できます。 イベント ビューアには、情報、警告、監査のエラー、SuecessAudit、FailureAudit の種類に応じて、さまざまなアイコンがあります。
  3. イベント ID: アプリケーションが使用できるアプリケーション固有のイベント ID を指定できます。 さらに、アプリケーション固有のバイナリ データとカテゴリを渡すこともできます。

書き込む新しいイベント ソースを常に作成する必要はありません。 イベントログと同じ名前の既存のものと一緒に書き込むことができます。

C# で Windows イベント ログをプログラムで操作する方法を見てみましょう。 ソースが存在しない場合は、以下のコードでソースを作成できます。

コード例:

private string CreateEventSource(string mynewAppName) {
  string eventSource = mynewAppName;
  bool sourceExists;
  try {
    sourceExists = EventLog.SourceExists(eventSource);
    if (!sourceExists) {
      EventLog.CreateEventSource(eventSource, "Application");
    }
  } catch (SecurityException) {
    eventSource = "Application";
  }

  return eventSource;
}

それでは、上記のサンプルコードの各部分について説明しましょう。

  1. sourceExists: この検索では、ソースが存在しない場合にのみ、ソースがセキュリティ例外をスローします。
  2. mynewAppName: mynewAppName でソースを呼び出すことができます。

エラーが発生した場合、ユーザーにはセキュリティのための管理者権限が必要です。 とても簡単です。 .NET フレームワーク System.Diagnostics.EventLog クラスのみを使用する必要があります。

まず、WriteEntry() メソッドで System.Diagnostics.EventLog クラスのインスタンスを作成します。 次に、EventLog.SourceExists メソッドを使用して、イベント ソース system が存在するかどうかを確認します。

存在しない場合は、System EventLog の下に作成します。 ログに記録されたイベントは System EventLog の下に表示され、イベント ソースには system が表示されます。

コード例:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace neweventlogg {
  internal class Program {
    static void Main(string[] args) {
      using (EventLog neweventLog = new EventLog("Application")) {
        neweventLog.Source = "Application";
        neweventLog.WriteEntry("event Log message example", EventLogEntryType.Information, 102, 1);
      }
    }
  }
}

上記のコードでクラス ロガーが作成されます。 その後、EventLog が作成されます。 EventLog が既に存在する場合、文字列メッセージが保存されます。 それ以外の場合、新しいイベント ソースが作成されます。

WriteEvent() および WriteEntry() メソッドを使用することで、イベントをイベント ログに書き込むことができます。 ただし、場合によっては、セキュリティ上の理由から、イベント ログ アプリケーションへの書き込みに特別なアクセス許可が必要になることがあります。

関連記事 - Csharp Event