EventLog.CreateEventSource メソッド

定義

システム上の特定のログにイベント情報を書き込むことができるようにアプリケーションを設定します。

オーバーロード

CreateEventSource(EventSourceCreationData)

イベント ソースおよび対応するイベント ログに指定された構成プロパティを使用して、ローカライズされたイベント メッセージを書き込むための有効なイベント ソースを設定します。

CreateEventSource(String, String)

ローカル コンピューター上のログにエントリを書き込むための有効なイベント ソースとして指定したソース名を設定します。 また、このメソッドによってローカル コンピューター上に新しいカスタム ログを作成することもできます。

CreateEventSource(String, String, String)
古い.
古い.
古い.

指定したコンピューター上のログにエントリを書き込むための有効なイベント ソースとして指定したソース名を設定します。 このメソッドを使用して、指定したコンピューター上に新しいカスタム ログを作成することもできます。

CreateEventSource(EventSourceCreationData)

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

イベント ソースおよび対応するイベント ログに指定された構成プロパティを使用して、ローカライズされたイベント メッセージを書き込むための有効なイベント ソースを設定します。

public:
 static void CreateEventSource(System::Diagnostics::EventSourceCreationData ^ sourceData);
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
Public Shared Sub CreateEventSource (sourceData As EventSourceCreationData)

パラメーター

sourceData
EventSourceCreationData

イベント ソースおよび対象のイベント ログの構成プロパティ。

例外

sourceData で指定されたコンピューター名が無効です。

- または -

sourceData で指定されたソース名が null です。

- または -

sourceData で指定されたログ名が無効です。 イベント ログ名は印刷可能な文字で構成されている必要があり、文字 '*'、'?'、または '\' を含めることはできません。

- または -

sourceData で指定されたログ名は、ユーザー ログの作成には無効です。 イベント ログ名 AppEvent、SysEvent、および SecEvent は、システムで使用するために予約されています。

- または -

ログ名が既存のイベント ソース名に一致します。

- または -

sourceData で指定されたソース名は、254 文字を超えるレジストリ キーのパスになります。

- または -

sourceData で指定されたログ名の最初の 8 文字が一意ではありません。

- または -

sourceData で指定されたソース名は既に登録されています。

- または -

sourceData で指定されたソース名が既存のイベント ログ名に一致しません。

イベント ログのレジストリ キーを開けませんでした。

sourceDatanullです。

次の例では、 という名前 SampleApplicationSource のイベント ソースがローカル コンピューターに登録されているかどうかを判断します。 イベント ソースが存在しない場合は、ソースのメッセージ リソース ファイルを設定し、新しいイベント ソースを作成します。 最後に、 のリソース識別子の値 DisplayNameMsgId と のリソース ファイル パス messageFileを使用して、イベント ログのローカライズされた表示名を設定します。

void CreateEventSourceSample1( String^ messageFile )
{
   String^ myLogName;
   String^ sourceName = "SampleApplicationSource";
   
   // Create the event source if it does not exist.
   if (  !EventLog::SourceExists( sourceName ) )
   {
      
      // Create a new event source for the custom event log
      // named "myNewLog."  
      myLogName = "myNewLog";
      EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( sourceName,myLogName );
      
      // Set the message resource file that the event source references.
      // All event resource identifiers correspond to text in this file.
      if (  !System::IO::File::Exists( messageFile ) )
      {
         Console::WriteLine( "Input message resource file does not exist - {0}", messageFile );
         messageFile = "";
      }
      else
      {
         
         // Set the specified file as the resource
         // file for message text, category text, and 
         // message parameter strings.  
         mySourceData->MessageResourceFile = messageFile;
         mySourceData->CategoryResourceFile = messageFile;
         mySourceData->CategoryCount = CategoryCount;
         mySourceData->ParameterResourceFile = messageFile;
         Console::WriteLine( "Event source message resource file set to {0}", messageFile );
      }

      Console::WriteLine( "Registering new source for event log." );
      EventLog::CreateEventSource( mySourceData );
   }
   else
   {
      
      // Get the event log corresponding to the existing source.
      myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
   }

   
   // Register the localized name of the event log.
   // For example, the actual name of the event log is "myNewLog," but
   // the event log name displayed in the Event Viewer might be
   // "Sample Application Log" or some other application-specific
   // text.
   EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );
   if ( messageFile->Length > 0 )
   {
      myEventLog->RegisterDisplayName( messageFile, DisplayNameMsgId );
   }   
}
static void CreateEventSourceSample1(string messageFile)
{
    string myLogName;
    string sourceName = "SampleApplicationSource";

    // Create the event source if it does not exist.
    if(!EventLog.SourceExists(sourceName))
    {
        // Create a new event source for the custom event log
        // named "myNewLog."

        myLogName = "myNewLog";
        EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);

        // Set the message resource file that the event source references.
        // All event resource identifiers correspond to text in this file.
        if (!System.IO.File.Exists(messageFile))
        {
            Console.WriteLine("Input message resource file does not exist - {0}",
                messageFile);
            messageFile = "";
        }
        else
        {
            // Set the specified file as the resource
            // file for message text, category text, and
            // message parameter strings.

            mySourceData.MessageResourceFile = messageFile;
            mySourceData.CategoryResourceFile = messageFile;
            mySourceData.CategoryCount = CategoryCount;
            mySourceData.ParameterResourceFile = messageFile;

            Console.WriteLine("Event source message resource file set to {0}",
                messageFile);
        }

        Console.WriteLine("Registering new source for event log.");
        EventLog.CreateEventSource(mySourceData);
    }
    else
    {
        // Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".");
    }

    // Register the localized name of the event log.
    // For example, the actual name of the event log is "myNewLog," but
    // the event log name displayed in the Event Viewer might be
    // "Sample Application Log" or some other application-specific
    // text.
    EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

    if (messageFile.Length > 0)
    {
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
    }
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)

    Dim myLogName As String
    Dim sourceName As String = "SampleApplicationSource"

    ' Create the event source if it does not exist.
    If Not EventLog.SourceExists(sourceName)
    
        ' Create a new event source for the custom event log
        ' named "myNewLog."  

        myLogName = "myNewLog"
        Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)

        ' Set the message resource file that the event source references.
        ' All event resource identifiers correspond to text in this file.
        If Not System.IO.File.Exists(messageFile)

            Console.WriteLine("Input message resource file does not exist - {0}", _
                messageFile)
            messageFile = ""
        Else 
            ' Set the specified file as the resource
            ' file for message text, category text and 
            ' message parameters strings.

            mySourceData.MessageResourceFile = messageFile
            mySourceData.CategoryResourceFile = messageFile
            mySourceData.CategoryCount = CategoryCount
            mySourceData.ParameterResourceFile = messageFile

            Console.WriteLine("Event source message resource file set to {0}", _
                messageFile)
        End If

        Console.WriteLine("Registering new source for event log.")
        EventLog.CreateEventSource(mySourceData)
    Else
        ' Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".")
    End If

    ' Register the localized name of the event log.
    ' For example, the actual name of the event log is "myNewLog," but
    ' the event log name displayed in the Event Viewer might be
    ' "Sample Application Log" or some other application-specific
    ' text.
    Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
    
    If messageFile.Length > 0
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
    End If
End Sub

この例では、リソース ライブラリ EventLogMsgs.dll に組み込まれている次のメッセージ テキスト ファイルを使用します。 メッセージ テキスト ファイルは、メッセージ リソース ファイルの作成元のソースです。 メッセージ テキスト ファイルは、カテゴリ、イベント メッセージ、およびパラメーター挿入文字列のリソース識別子とテキストを定義します。 具体的には、イベント ログのローカライズされた名前に対してリソース識別子 5001 が定義されます。

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

注釈

このオーバーロードを使用して、ローカル コンピューターまたはリモート コンピューター上のイベント ログにエントリを書き込む新しいソースを構成します。 このメソッドを使用してイベント ログから読み取る必要はありません。

メソッドは CreateEventSource 、入力 sourceDataSourceプロパティ LogNameMachineName プロパティを使用して、新しいソースとそれに関連付けられているイベント ログのターゲット コンピューターにレジストリ値を作成します。 新しいソース名は、ターゲット コンピューター上の既存のソース名または既存のイベント ログ名と一致できません。 プロパティが LogName 設定されていない場合、ソースはアプリケーション イベント ログに登録されます。 MachineNameが設定されていない場合、ソースはローカル コンピューターに登録されます。

注意

Windows Vista 以降または Windows Server 2003 でイベント ソースを作成するには、管理者特権が必要です。

この要件の理由は、セキュリティを含むすべてのイベント ログを検索して、イベント ソースが一意かどうかを判断する必要があるということです。 Windows Vista 以降、ユーザーにはセキュリティ ログにアクセスするアクセス許可がありません。したがって、 SecurityException がスローされます。

Windows Vista 以降では、ユーザー アカウント制御 (UAC) によってユーザーの特権が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 セキュリティ ログにアクセスするコードを実行するには、まず、特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

イベント ログにイベントを書き込むには、 と WriteEntry を使用WriteEventします。 イベントを書き込むには、イベント ソースを指定する必要があります。最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。

アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新していない場合、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

既存のイベント ログまたは新しいイベント ログのイベント ソースを作成できます。 新しいイベント ログの新しいソースを作成すると、システムはそのログのソースを登録しますが、最初のエントリが書き込まれるまでログは作成されません。

オペレーティング システムではイベント ログはファイルとして保存されます。 または CreateEventSource を使用EventLogInstallerして新しいイベント ログを作成すると、関連付けられているファイルは、指定したコンピューターの %SystemRoot%\System32\Config ディレクトリに格納されます。 ファイル名は、プロパティの最初の 8 文字 Log に ".evt" ファイル名拡張子を付けることで設定されます。

各ソースは、一度に 1 つのイベント ログにのみ書き込むことができます。ただし、アプリケーションは複数のソースを使用して複数のイベント ログに書き込むことができます。 たとえば、アプリケーションでは、異なるイベント ログまたは異なるリソース ファイルに対して複数のソースを構成する必要がある場合があります。

イベント カテゴリとメッセージ文字列のローカライズされたリソース ファイルにイベント ソースを登録できます。 アプリケーションでは、実際の文字列を指定するのではなく、リソース識別子を使用してイベント ログ エントリを書き込むことができます。 イベント ビューアーは、リソース識別子を使用して、現在の言語設定に基づいてローカライズされたリソース ファイルから対応する文字列を検索して表示します。 イベント カテゴリ、メッセージ、パラメーター挿入文字列用に個別のファイルを登録することも、3 種類の文字列すべてに同じリソース ファイルを登録することもできます。 、CategoryResourceFileCategoryCountMessageResourceFile、および ParameterResourceFile の各プロパティを使用して、ローカライズされたエントリをイベント ログに書き込むソースを構成します。 アプリケーションがイベント ログに文字列値を直接書き込む場合は、これらのプロパティを設定する必要はありません。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を書き込む目的で構成する必要があります。 アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2 つの個別のソースを登録する必要があります。 たとえば、リソース ファイルを使用して 1 つのソースを構成し、 メソッドでそのソースを WriteEvent 使用して、リソース識別子を使用してエントリをイベント ログに書き込みます。 次に、リソース ファイルのない別のソースを作成し、 メソッドでそのソースを WriteEntry 使用して、そのソースを使用してイベント ログに文字列を直接書き込みます。

既存のソースの構成の詳細を変更するには、ソースを削除してから、新しい構成で作成する必要があります。 他のアプリケーションまたはコンポーネントで既存のソースを使用する場合は、既存のソースを削除するのではなく、更新された構成で新しいソースを作成します。

注意

ソースがイベント ログ用に構成されていて、別のイベント ログ用に再構成する場合は、変更を有効にするためにコンピューターを再起動する必要があります。

こちらもご覧ください

適用対象

CreateEventSource(String, String)

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

ローカル コンピューター上のログにエントリを書き込むための有効なイベント ソースとして指定したソース名を設定します。 また、このメソッドによってローカル コンピューター上に新しいカスタム ログを作成することもできます。

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName);
public static void CreateEventSource (string source, string logName);
static member CreateEventSource : string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String)

パラメーター

source
String

アプリケーションをローカル コンピューター上に登録するときに使用するソース名。

logName
String

ソースのエントリが書き込まれるログの名前。 指定できる値は、"Application"、"System"、またはカスタム イベント ログです。

例外

source が空の文字列 ("") または null

- または -

logName が有効なイベント ログ名ではありません。 イベント ログ名は印刷可能な文字で構成されている必要があり、文字 '*'、'?'、または '\' を含めることはできません。

- または -

logName はユーザー ログの作成に有効ではありません。 イベント ログ名 AppEvent、SysEvent、および SecEvent は、システムで使用するために予約されています。

- または -

ログ名が既存のイベント ソース名に一致します。

- または -

ソース名は、254 文字を超えるレジストリ キーのパスになります。

- または -

logName の最初の 8 文字が既存のイベント ログ名の最初の 8 文字に一致します。

- または -

ローカル コンピューター上に既にソースが存在するため、ソースを登録できません。

- または -

ソース名が既存のイベント ログ名に一致します。

ローカル コンピューター上のイベント ログのレジストリ キーを開けませんでした。

次の例では、ソース MySource がまだ存在しない場合は作成し、イベント ログ にエントリを書き込みます MyNewLog

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      //An event log source should not be created and immediately used.
      //There is a latency time to enable the source, it should be created
      //prior to executing the application that uses the source.
      //Execute this sample a second time to use the new source.
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' An event log source should not be created and immediately used.
            ' There is a latency time to enable the source, it should be created
            ' prior to executing the application that uses the source.
            ' Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
    End Sub
End Class

注釈

このオーバーロードを使用して、カスタム ログを作成するか、ローカル コンピューター上の既存のログに を作成して登録 Source します。

null または を呼び出CreateEventSourceすときに空の文字列 ("") の場合logName、ログは既定でアプリケーション ログに設定されます。 ローカル コンピューターにログが存在しない場合、システムはカスタム ログを作成し、そのログの としてアプリケーションを Source 登録します。

注意

Windows Vista 以降または Windows Server 2003 でイベント ソースを作成するには、管理者特権が必要です。

この要件の理由は、セキュリティを含むすべてのイベント ログを検索して、イベント ソースが一意かどうかを判断する必要があるということです。 Windows Vista 以降、ユーザーにはセキュリティ ログにアクセスするアクセス許可がありません。したがって、 SecurityException がスローされます。

Windows Vista 以降では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 セキュリティ ログにアクセスするコードを実行するには、まず、特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

イベント ログに書き込む場合にのみ、イベント ソースを作成する必要があります。 イベント ログにエントリを書き込む前に、イベント ソースをイベント ログに有効なイベント ソースとして登録する必要があります。 ログ エントリを書き込むと、システムは を Source 使用して、エントリを配置する適切なログを見つけます。 イベント ログを読み取る場合は、 または LogMachineNameと を指定Sourceできます。

注意

ローカル コンピューターのログに接続する場合は、 を指定 MachineName する必要はありません。 ログからの読み取り時に を MachineName 指定しない場合は、ローカル コンピューター (".") が想定されます。

イベント ログにイベントを書き込むには、 と WriteEntry を使用WriteEventします。 イベントを書き込むには、イベント ソースを指定する必要があります。最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。

アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新していない場合、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

既存のイベント ログまたは新しいイベント ログのイベント ソースを作成できます。 新しいイベント ログの新しいソースを作成すると、システムはそのログのソースを登録しますが、最初のエントリが書き込まれるまでログは作成されません。

オペレーティング システムではイベント ログはファイルとして保存されます。 または CreateEventSource を使用EventLogInstallerして新しいイベント ログを作成すると、関連付けられているファイルは、指定したコンピューターの %SystemRoot%\System32\Config ディレクトリに格納されます。 ファイル名は、プロパティの最初の 8 文字 Log に ".evt" ファイル名拡張子を付けることで設定されます。

ソースはローカル コンピューターで一意である必要があります。新しいソース名は、既存のソース名または既存のイベント ログ名と一致できません。 各ソースは、一度に 1 つのイベント ログにのみ書き込むことができます。ただし、アプリケーションは複数のソースを使用して複数のイベント ログに書き込むことができます。 たとえば、アプリケーションでは、異なるイベント ログまたは異なるリソース ファイルに対して複数のソースを構成する必要がある場合があります。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を書き込む目的で構成する必要があります。 アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2 つの個別のソースを登録する必要があります。 たとえば、リソース ファイルを使用して 1 つのソースを構成し、 メソッドでそのソースを WriteEvent 使用して、リソース識別子を使用してエントリをイベント ログに書き込みます。 次に、リソース ファイルのない別のソースを作成し、 メソッドでそのソースを WriteEntry 使用して、そのソースを使用してイベント ログに文字列を直接書き込みます。

既存のソースの構成の詳細を変更するには、ソースを削除してから、新しい構成で作成する必要があります。 他のアプリケーションまたはコンポーネントで既存のソースを使用する場合は、既存のソースを削除するのではなく、更新された構成で新しいソースを作成します。

注意

ソースが既にログにマップされていて、それを新しいログに再マップする場合は、変更を有効にするためにコンピューターを再起動する必要があります。

こちらもご覧ください

適用対象

CreateEventSource(String, String, String)

ソース:
EventLog.cs
ソース:
EventLog.cs
ソース:
EventLog.cs

注意事項

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202

注意事項

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202

注意事項

EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.

指定したコンピューター上のログにエントリを書き込むための有効なイベント ソースとして指定したソース名を設定します。 このメソッドを使用して、指定したコンピューター上に新しいカスタム ログを作成することもできます。

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::String ^ machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

パラメーター

source
String

アプリケーションを指定されたコンピューターに登録するために使用されるソース。

logName
String

ソースのエントリが書き込まれるログの名前。 指定できる値は、"Application"、"System"、またはカスタム イベント ログです。 値を指定しなかった場合、logName は既定によりアプリケーションに設定されます。

machineName
String

このイベント ソースを登録するコンピューターの名前。ローカル コンピューターの場合は "."。

属性

例外

machineName が有効なコンピューター名ではありません。

- または -

source が空の文字列 ("") または null

- または -

logName が有効なイベント ログ名ではありません。 イベント ログ名は印刷可能な文字で構成されている必要があり、文字 '*'、'?'、または '\' を含めることはできません。

- または -

logName はユーザー ログの作成に有効ではありません。 イベント ログ名 AppEvent、SysEvent、および SecEvent は、システムで使用するために予約されています。

- または -

ログ名が既存のイベント ソース名に一致します。

- または -

ソース名は、254 文字を超えるレジストリ キーのパスになります。

- または -

logName の最初の 8 文字が指定したコンピューター上の既存のイベント ログ名の最初の 8 文字に一致します。

- または -

指定したコンピューター上に既にソースが存在するため、ソースを登録できません。

- または -

ソース名が既存のイベント ソース名に一致します。

指定したコンピューター上のイベント ログのレジストリ キーを開けませんでした。

次の例では、 コンピューターにソースMySourceを作成し、イベント ログ にエントリを書き込みますMyNewLogMyServer

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource", "MyServer" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog", "MyServer" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
   Console::WriteLine( "Message written to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource", "MyServer"))
        {
            // An event log source should not be created and immediately used.
            // There is a latency time to enable the source, it should be created
            // prior to executing the application that uses the source.
            // Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");
            Console.WriteLine("CreatingEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");

        Console.WriteLine("Message written to event log.");
    }
}
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource", "MyServer") Then
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer")
            Console.WriteLine("CreatingEventSource")
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
        
        Console.WriteLine("Message written to event log.")
    End Sub
End Class

注釈

このオーバーロードを使用して、カスタム ログを作成するか、指定したコンピューター上の既存のログに を作成して登録 Source します。

null または を呼び出CreateEventSourceすときに空の文字列 ("") の場合logName、ログは既定でアプリケーション ログに設定されます。 指定したコンピューターにログが存在しない場合、システムはカスタム ログを作成し、そのログの としてアプリケーションを Source 登録します。

イベント ログに書き込む場合にのみ、イベント ソースを作成する必要があります。 イベント ログにエントリを書き込む前に、イベント ソースをイベント ログに有効なイベント ソースとして登録する必要があります。 ログ エントリを書き込むと、システムは を Source 使用して、エントリを配置する適切なログを見つけます。 イベント ログを読み取る場合は、 または LogMachineNameと を指定Sourceできます。

注意

Windows Vista 以降または Windows Server 2003 でイベント ソースを作成するには、管理者特権が必要です。

この要件の理由は、セキュリティを含むすべてのイベント ログを検索して、イベント ソースが一意かどうかを判断する必要があるということです。 Windows Vista 以降では、ユーザーはセキュリティ ログにアクセスするアクセス許可を持っていません。したがって、 SecurityException がスローされます。

Windows Vista 以降では、ユーザー アカウント制御 (UAC: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 セキュリティ ログにアクセスするコードを実行するには、まず、特権を標準ユーザーから管理者に昇格させる必要があります。 この操作は、アプリケーションの起動時にアプリケーション アイコンを右クリックし、管理者として実行することを指定して行うことができます。

イベント ログにイベントを書き込むには、 と WriteEntry を使用WriteEventします。 イベントを書き込むには、イベント ソースを指定する必要があります。最初のエントリをソースと共に書き込む前に、イベント ソースを作成して構成する必要があります。

アプリケーションのインストール中に新しいイベント ソースをCreateします。 これにより、オペレーティング システムが登録されているイベント ソースとその構成の一覧を更新する時間が得られます。 オペレーティング システムがイベント ソースの一覧を更新せず、新しいソースでイベントを書き込もうとすると、書き込み操作は失敗します。 を使用するか、 メソッドを EventLogInstaller使用して新しいソースを CreateEventSource 構成できます。 新しいイベント ソースを作成するには、コンピューターの管理者権限が必要です。

既存のイベント ログまたは新しいイベント ログのイベント ソースを作成できます。 新しいイベント ログの新しいソースを作成すると、システムはそのログのソースを登録しますが、最初のエントリが書き込まれるまでログは作成されません。

オペレーティング システムではイベント ログはファイルとして保存されます。 または CreateEventSource を使用EventLogInstallerして新しいイベント ログを作成すると、関連付けられているファイルは、指定したコンピューターの %SystemRoot%\System32\Config ディレクトリに格納されます。 ファイル名は、プロパティの最初の 8 文字 Log に ".evt" ファイル名拡張子を付加することによって設定されます。

ソースはローカル コンピューターで一意である必要があります。新しいソース名は、既存のソース名または既存のイベント ログ名と一致できません。 各ソースは、一度に 1 つのイベント ログにのみ書き込むことができます。ただし、アプリケーションでは複数のソースを使用して複数のイベント ログに書き込むことができます。 たとえば、アプリケーションでは、異なるイベント ログまたは異なるリソース ファイル用に構成された複数のソースが必要になる場合があります。

ソースは、ローカライズされたエントリを書き込むか、直接文字列を記述するように構成する必要があります。 アプリケーションがリソース識別子と文字列値の両方を使用してエントリを書き込む場合は、2 つの個別のソースを登録する必要があります。 たとえば、リソース ファイルを使用して 1 つのソースを構成し、 メソッドでそのソースを WriteEvent 使用して、リソース識別子を使用してエントリをイベント ログに書き込みます。 次に、リソース ファイルを含まない別のソースを作成し、 メソッドでそのソースを WriteEntry 使用して、そのソースを使用してイベント ログに文字列を直接書き込みます。

既存のソースの構成の詳細を変更するには、ソースを削除してから、新しい構成で作成する必要があります。 他のアプリケーションまたはコンポーネントが既存のソースを使用する場合は、既存のソースを削除するのではなく、更新された構成で新しいソースを作成します。

注意

ソースが既にログにマップされていて、それを新しいログに再マップする場合は、変更を有効にするためにコンピューターを再起動する必要があります。

こちらもご覧ください

適用対象