Bagikan melalui


EventSourceCreationData Kelas

Definisi

Mewakili pengaturan konfigurasi yang digunakan untuk membuat sumber log kejadian pada komputer lokal atau komputer jarak jauh.

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Warisan
EventSourceCreationData

Contoh

Contoh kode berikut mengatur properti konfigurasi untuk sumber peristiwa dari argumen baris perintah. Argumen input menentukan nama sumber peristiwa, nama log peristiwa, nama komputer, dan file sumber daya pesan peristiwa. Contoh kode memverifikasi bahwa sumber tidak bertentangan dengan sumber peristiwa yang ada, lalu membuat sumber peristiwa baru untuk log peristiwa yang ditentukan.

#using <System.dll>

using namespace System;
using namespace System::Globalization;
using namespace System::Diagnostics;

[STAThread]
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   
   EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( "","" );
   bool registerSource = true;
   
   // Process input parameters.
   if ( args->Length > 1 )
   {
      
      // Require at least the source name.
      mySourceData->Source = args[ 1 ];
      if ( args->Length > 2 )
      {
         mySourceData->LogName = args[ 2 ];
      }

      if ( args->Length > 3 )
      {
         mySourceData->MachineName = args[ 3 ];
      }

      if ( (args->Length > 4) && (args[ 4 ]->Length > 0) )
      {
         mySourceData->MessageResourceFile = args[ 4 ];
      }
   }
   else
   {
      
      // Display a syntax help message.
      Console::WriteLine( "Input:" );
      Console::WriteLine( " source [event log] [machine name] [resource file]" );
      registerSource = false;
   }

   
   // Set defaults for parameters missing input.
   if ( mySourceData->MachineName->Length == 0 )
   {
      
      // Default to the local computer.
      mySourceData->MachineName = ".";
   }

   if ( mySourceData->LogName->Length == 0 )
   {
      
      // Default to the Application log.
      mySourceData->LogName = "Application";
   }

   
   // Determine if the source exists on the specified computer.
   if (  !EventLog::SourceExists( mySourceData->Source, mySourceData->MachineName ) )
   {
      
      // The source does not exist.  
      // Verify that the message file exists
      // and the event log is local.
      if ( (mySourceData->MessageResourceFile != nullptr) && (mySourceData->MessageResourceFile->Length > 0) )
      {
         if ( mySourceData->MachineName->Equals( "." ) )
         {
            if (  !System::IO::File::Exists( mySourceData->MessageResourceFile ) )
            {
               Console::WriteLine( "File {0} not found - message file not set for source.", mySourceData->MessageResourceFile );
               registerSource = false;
            }
         }
         else
         {
            
            // For simplicity, do not allow setting the message
            // file for a remote event log.  To set the message
            // for a remote event log, and for source registration,
            // the file path should be specified with system-wide
            // environment variables that are valid on the remote
            // computer, such as
            // "%SystemRoot%\system32\myresource.dll".
            Console::WriteLine( "Message resource file ignored for remote event log." );
            registerSource = false;
         }
      }
   }
   else
   {
      
      // Do not register the source, it already exists.
      registerSource = false;
      
      // Get the event log corresponding to the existing source.
      String^ sourceLog;
      sourceLog = EventLog::LogNameFromSourceName( mySourceData->Source, mySourceData->MachineName );
      
      // Determine if the event source is registered for the 
      // specified log.
      if ( sourceLog->ToUpper( CultureInfo::InvariantCulture ) != mySourceData->LogName->ToUpper( CultureInfo::InvariantCulture ) )
      {
         
         // An existing source is registered 
         // to write to a different event log.
         Console::WriteLine( "Warning: source {0} is already registered to write to event log {1}", mySourceData->Source, sourceLog );
      }
      else
      {
         
         // The source is already registered 
         // to write to the specified event log.
         Console::WriteLine( "Source {0} already registered to write to event log {1}", mySourceData->Source, sourceLog );
      }
   }

   if ( registerSource )
   {
      
      // Register the new event source for the specified event log.
      Console::WriteLine( "Registering new source {0} for event log {1}.", mySourceData->Source, mySourceData->LogName );
      EventLog::CreateEventSource( mySourceData );
      Console::WriteLine( "Event source was registered successfully!" );
   }
}
using System;
using System.Globalization;
using System.Diagnostics;

namespace EventLogSamples
{
    class CreateSourceSample
    {
        [STAThread]
        static void Main(string[] args)
        {
            EventSourceCreationData mySourceData = new EventSourceCreationData("", "");
            bool registerSource = true;

            // Process input parameters.
            if (args.Length > 0)
            {
                // Require at least the source name.

                mySourceData.Source = args[0];

                if (args.Length > 1)
                {
                    mySourceData.LogName = args[1];
                }

                if (args.Length > 2)
                {
                    mySourceData.MachineName = args[2];
                }
                if ((args.Length > 3) && (args[3].Length > 0))
                {
                    mySourceData.MessageResourceFile = args[3];
                }
            }
            else
            {
                // Display a syntax help message.
                Console.WriteLine("Input:");
                Console.WriteLine(" source [event log] [machine name] [resource file]");

                registerSource = false;
            }

            // Set defaults for parameters missing input.
            if (mySourceData.MachineName.Length == 0)
            {
                // Default to the local computer.
                mySourceData.MachineName = ".";
            }
            if (mySourceData.LogName.Length == 0)
            {
                // Default to the Application log.
                mySourceData.LogName = "Application";
            }

            // Determine if the source exists on the specified computer.
            if (!EventLog.SourceExists(mySourceData.Source,
                                       mySourceData.MachineName))
            {
                // The source does not exist.

                // Verify that the message file exists
                // and the event log is local.

                if ((mySourceData.MessageResourceFile != null) &&
                    (mySourceData.MessageResourceFile.Length > 0))
                {
                    if (mySourceData.MachineName == ".")
                    {
                        if (!System.IO.File.Exists(mySourceData.MessageResourceFile))
                        {
                            Console.WriteLine("File {0} not found - message file not set for source.",
                                mySourceData.MessageResourceFile);
                            registerSource = false;
                        }
                    }
                    else
                    {
                        // For simplicity, do not allow setting the message
                        // file for a remote event log.  To set the message
                        // for a remote event log, and for source registration,
                        // the file path should be specified with system-wide
                        // environment variables that are valid on the remote
                        // computer, such as
                        // "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.");
                        registerSource = false;
                    }
                }
            }
            else
            {
                // Do not register the source, it already exists.
                registerSource = false;

                // Get the event log corresponding to the existing source.
                string sourceLog;
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source,
                                mySourceData.MachineName);

                // Determine if the event source is registered for the
                // specified log.

                if (sourceLog.ToUpper(CultureInfo.InvariantCulture) != mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture))
                {
                    // An existing source is registered
                    // to write to a different event log.
                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
                else
                {
                    // The source is already registered
                    // to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
            }

            if (registerSource)
            {
                // Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.",
                    mySourceData.Source, mySourceData.LogName);
                EventLog.CreateEventSource(mySourceData);
                Console.WriteLine("Event source was registered successfully!");
            }
        }
    }
}
Imports System.Globalization
Imports System.Diagnostics

Namespace EventLogSamples
    Class CreateSourceSample

        Public Shared Sub Main(ByVal args() As String)
        
            Dim mySourceData As EventSourceCreationData = new EventSourceCreationData("", "")
            Dim registerSource As Boolean = True

            ' Process input parameters.
            If args.Length > 0
                ' Require at least the source name.

                mySourceData.Source = args(0)

                If args.Length > 1
   
                    mySourceData.LogName = args(1)
    
                End If
                If args.Length > 2
   
                    mySourceData.MachineName = args(2)
    
                End If
                If args.Length > 3 AndAlso args(3).Length > 0
   
                    mySourceData.MessageResourceFile = args(3)
    
                End If

            Else 
                ' Display a syntax help message.
                Console.WriteLine("Input:")
                Console.WriteLine(" source [event log] [machine name] [resource file]")

                registerSource = False
            End If

            ' Set defaults for parameters missing input.
            If mySourceData.MachineName.Length = 0
            
                ' Default to the local computer.
                mySourceData.MachineName = "."
            End If
            If mySourceData.LogName.Length = 0
                ' Default to the Application log.
                mySourceData.LogName = "Application"
            End If

            ' Determine if the source exists on the specified computer.
            If Not EventLog.SourceExists(mySourceData.Source, _
                                       mySourceData.MachineName)
                ' The source does not exist.  

                ' Verify that the message file exists
                ' and the event log is local.
                If mySourceData.MessageResourceFile <> Nothing AndAlso _
                   mySourceData.MessageResourceFile.Length > 0
                   
                    If mySourceData.MachineName = "."
                        If Not System.IO.File.Exists(mySourceData.MessageResourceFile)

                            Console.WriteLine("File {0} not found - message file not set for source.", _
                                mySourceData.MessageResourceFile)
                            registerSource = False
                        End If
                    Else
                        ' For simplicity, do not allow setting the message
                        ' file for a remote event log.  To set the message
                        ' for a remote event log, and for source registration,
                        ' the file path should be specified with system-wide
                        ' environment variables that are valid on the remote
                        ' computer, such as
                        ' "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.")
                        registerSource = False

                    End If
                End If
            Else 
                ' Do not register the source, it already exists.
                registerSource = False

                ' Get the event log corresponding to the existing source.
                Dim sourceLog As string
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source, _
                                mySourceData.MachineName)

                ' Determine if the event source is registered for the 
                ' specified log.

                If sourceLog.ToUpper(CultureInfo.InvariantCulture) <> mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)

                    ' An existing source is registered 
                    ' to write to a different event log.

                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}", _
                        mySourceData.Source, sourceLog)
                Else 
                    ' The source is already registered 
                    ' to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}", _
                        mySourceData.Source, sourceLog)

                End If
            End If

            If registerSource
                ' Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.", _
                    mySourceData.Source, mySourceData.LogName)
                EventLog.CreateEventSource(mySourceData)
                Console.WriteLine("Event source was registered successfully!")
            End If

        End Sub
    End Class
End Namespace 'EventLogSamples

Keterangan

EventSourceCreationData Gunakan kelas untuk mengonfigurasi sumber baru untuk menulis entri yang dilokalkan ke log peristiwa. Tidak perlu menggunakan kelas ini untuk membaca dari log peristiwa.

Kelas ini menentukan pengaturan konfigurasi untuk sumber peristiwa baru dan log peristiwa terkait. Log peristiwa terkait dapat berada di komputer lokal atau komputer jarak jauh. Untuk membuat sumber baru untuk log peristiwa baru atau yang sudah ada di komputer lokal, atur LogName properti dan Source dari EventSourceCreationData dan panggil EventLog.CreateEventSource(EventSourceCreationData) metode . Metode ini membuat sumber peristiwa yang Anda tentukan di Source properti dan mendaftarkannya untuk log peristiwa yang ditentukan dalam LogName. Perilaku ini mirip dengan menggunakan EventLogInstaller kelas untuk mendaftarkan sumber peristiwa untuk log peristiwa.

WriteEvent Gunakan metode dan WriteEntry untuk menulis peristiwa ke log peristiwa. Anda harus menentukan sumber peristiwa untuk menulis peristiwa; Anda harus membuat dan mengonfigurasi sumber peristiwa sebelum menulis entri pertama dengan sumbernya.

Create sumber peristiwa baru selama penginstalan aplikasi Anda. Ini memungkinkan waktu bagi sistem operasi untuk menyegarkan daftar sumber peristiwa terdaftar dan konfigurasinya. Jika sistem operasi belum merefresh daftar sumber peristiwanya, dan Anda mencoba menulis peristiwa dengan sumber baru, operasi tulis akan gagal. Anda dapat mengonfigurasi sumber baru menggunakan EventLogInstaller, atau menggunakan CreateEventSource metode . Anda harus memiliki hak administratif pada komputer untuk membuat sumber kejadian baru.

Anda dapat membuat sumber kejadian untuk log peristiwa yang sudah ada atau log peristiwa baru. Saat Anda membuat sumber baru untuk log peristiwa baru, sistem mendaftarkan sumber untuk log tersebut, tetapi log tidak dibuat sampai entri pertama ditulis ke dalamnya.

Setiap sumber hanya dapat menulis ke satu log peristiwa pada satu waktu; namun, aplikasi Anda dapat menggunakan beberapa sumber untuk menulis ke beberapa log peristiwa. Misalnya, aplikasi Anda mungkin memerlukan beberapa sumber yang dikonfigurasi untuk log peristiwa yang berbeda atau file sumber daya yang berbeda.

Untuk mengubah detail konfigurasi sumber yang ada, Anda harus menghapus sumber lalu membuatnya dengan konfigurasi baru. Jika aplikasi atau komponen lain menggunakan sumber yang ada, buat sumber baru dengan konfigurasi yang diperbarui daripada menghapus sumber yang ada.

Anda dapat mendaftarkan sumber peristiwa dengan sumber daya yang dilokalkan untuk kategori peristiwa dan string pesan Anda. Aplikasi Anda dapat menulis entri log peristiwa menggunakan pengidentifikasi sumber daya, daripada menentukan string aktual. Pemantau Peristiwa menggunakan pengidentifikasi sumber daya untuk menemukan dan menampilkan string yang sesuai dari file sumber daya yang dilokalkan berdasarkan pengaturan bahasa saat ini. Anda dapat mendaftarkan file terpisah untuk kategori peristiwa, pesan, dan string penyisipan parameter, atau Anda dapat mendaftarkan file sumber daya yang sama untuk ketiga jenis string. CategoryCountGunakan properti , CategoryResourceFile, MessageResourceFile, dan ParameterResourceFile untuk mengonfigurasi sumber untuk menulis entri yang dilokalkan ke log peristiwa. Jika aplikasi Anda menulis nilai string langsung ke log peristiwa, Anda tidak perlu mengatur properti ini.

Sumber harus dikonfigurasi baik untuk menulis entri yang dilokalkan atau untuk menulis string langsung. Metode WriteEntry menulis string yang diberikan langsung ke log peristiwa; metode ini tidak menggunakan file sumber daya pesan yang dapat dilokalkan. WriteEvent Gunakan metode untuk menulis peristiwa menggunakan file sumber daya pesan yang dilokalkan.

Jika aplikasi Anda menulis entri menggunakan pengidentifikasi sumber daya dan nilai string, Anda harus mendaftarkan dua sumber terpisah. Misalnya, konfigurasikan satu sumber dengan file sumber daya, lalu gunakan sumber tersebut WriteEvent dalam metode untuk menulis entri menggunakan pengidentifikasi sumber daya ke log peristiwa. Kemudian buat sumber yang berbeda tanpa file sumber daya dan gunakan sumber tersebut WriteEntry dalam metode untuk menulis string langsung ke log peristiwa menggunakan sumber tersebut.

Konstruktor

EventSourceCreationData(String, String)

Menginisialisasi instans EventSourceCreationData baru kelas dengan sumber peristiwa dan nama log peristiwa tertentu.

Properti

CategoryCount

Mendapatkan atau mengatur jumlah kategori dalam file sumber daya kategori.

CategoryResourceFile

Mendapatkan atau mengatur jalur file sumber daya yang berisi string kategori untuk sumber.

LogName

Mendapatkan atau mengatur nama log peristiwa tempat sumber menulis entri.

MachineName

Mendapatkan atau mengatur nama komputer untuk mendaftarkan sumber kejadian.

MessageResourceFile

Mendapatkan atau mengatur jalur file sumber daya pesan yang berisi string pemformatan pesan untuk sumbernya.

ParameterResourceFile

Mendapatkan atau mengatur jalur file sumber daya yang berisi string parameter pesan untuk sumbernya.

Source

Mendapatkan atau mengatur nama untuk mendaftar dengan log peristiwa sebagai sumber peristiwa.

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Berlaku untuk

Lihat juga