Visual C# .NET を使用してイベント ログに書き込む方法

文書翻訳 文書翻訳
文書番号: 307024 - 対象製品
この記事は、以前は次の ID で公開されていました: JP307024
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Microsoft .NET Framework を使用して、オペレーティング システムのイベント ログにユーザー独自のエントリを追加する方法について説明します。

必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は次のとおりです。
  • Microsoft Windows 2000 Professional、Windows 2000 Server、Windows 2000 Advanced Server、Windows NT 4.0 Server のいずれか
  • Microsoft Visual Studio .NET

イベント ログへの書き込み

イベント ログを使用すると、アプリケーションではソフトウェアやハードウェアの重要なイベントを、標準的な方法で一元管理された場所に記録できます。Windows では、イベント ビューアという名前のログを表示する標準的なユーザー インターフェイスを提供しています。共通言語ランタイムの EventLog コンポーネントを使用すると、ローカルおよびリモート コンピュータの既存のイベント ログに接続したり、これらのログにエントリを書き込む作業が容易に行えます。また、既存のイベント ログからエントリを読み取ったり、カスタム イベント ログを作成したりすることもできます。最も簡単な形式では、イベント ログへの書き込みに必要な作業は、サンプル アプリケーションを作成するわずかな手順のみです。これを行うには、次の手順を実行します。
  1. Visual Studio .NET を起動します。
  2. Microsoft C# で新しいコンソール アプリケーションを作成します。Visual C# .NET により、パブリック クラスと空の Main メソッドが作成されます。
  3. プロジェクトで少なくとも System.dll が参照されていることを確認します。
  4. System 名前空間と System.Diagnostics 名前空間に using ディレクティブを使用して、後続のコードでこれらの名前空間を使用して宣言を修飾する必要がないようにします。これらのステートメントは、他の宣言を行う前に使用する必要があります。
    using System;
    using System.Diagnostics;
    					
  5. イベント ログにエントリを書き込むには、メッセージ、書き込み先のログ ファイルの名前 (ログ ファイルが存在しない場合は作成するログ ファイルの名前)、およびイベントのソースを表す文字列など、いくつかの情報が必要です。ある特定のソースを登録できるイベント ログは 1 つのみであるため、複数のログにメッセージを書き込む場合、複数のソースを定義する必要があります。
    string sSource;
    string sLog;
    string sEvent;
    
    sSource = "dotNET Sample App";
    sLog = "Application";
    sEvent = "Sample Event";
    					
  6. EventLog クラスの 2 つの静的メソッドを使用して、ソースが存在するかどうかを確認します。ソースが存在しない場合、特定のイベント ログと関連付けるソースを作成します。指定したログ名が存在しない場合、初めてログにエントリを書き込むときに、ログ名が自動的に作成されます。デフォルトでは、CreateEventSource メソッドにログの名前を指定しない場合、ログの名前はアプリケーション ログになります。
    if (!EventLog.SourceExists(sSource))
    	EventLog.CreateEventSource(sSource,sLog);
    					
  7. イベント ログにメッセージを書き込むには、静的メソッド EventLog.WriteEntry を使用します。このメソッドには、いくつかの異なるオーバーロード バージョンがあります。次のサンプル コードでは、ソース文字列とメッセージを受け取る最も単純なメソッドと、イベント ID とイベントの種類の指定をサポートする複雑なメソッドを示します。
    EventLog.WriteEntry(sSource,sEvent);
    EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Warning,  234);
    					
  8. アプリケーションを保存し、アプリケーションを実行して、イベント ビューアのアプリケーション ログに新しいイベントが表示されることを確認します。

完全なコード リスト

using System;
using System.Diagnostics;

namespace WriteToAnEventLog_csharp
{
	/// Summary description for Class1.
	class Class1
	{
		static void Main(string[] args)
		{
			string sSource;
			string sLog;
			string sEvent;

			sSource = "dotNET Sample App";
			sLog = "Application";
			sEvent = "Sample Event";

			if (!EventLog.SourceExists(sSource))
				EventLog.CreateEventSource(sSource,sLog);

			EventLog.WriteEntry(sSource,sEvent);
			EventLog.WriteEntry(sSource, sEvent,
				EventLogEntryType.Warning, 234);
		}
	}
}
				
この資料に関してコメントや提案がある場合は、Visual C# .NET Article Feedback まで電子メールをお送りください。

プロパティ

文書番号: 307024 - 最終更新日: 2005年10月19日 - リビジョン: 3.3
この資料は以下の製品について記述したものです。
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
キーワード:?
kbdebug kbhowtomaster KB307024
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com