EventSourceCreationData Sınıf

Tanım

Yerel bilgisayarda veya uzak bilgisayarda olay günlüğü kaynağı oluşturmak için kullanılan yapılandırma ayarlarını temsil eder.

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

Örnekler

Aşağıdaki kod örneği, komut satırı bağımsız değişkenlerinden bir olay kaynağının yapılandırma özelliklerini ayarlar. Giriş bağımsız değişkenleri olay kaynağı adını, olay günlüğü adını, bilgisayar adını ve olay iletisi kaynak dosyasını belirtir. Kod örneği, kaynağın mevcut bir olay kaynağıyla çakışmadığını doğrular ve ardından belirtilen olay günlüğü için yeni olay kaynağını oluşturur.

#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

Açıklamalar

EventSourceCreationData Bir olay günlüğüne yerelleştirilmiş girişler yazmak için yeni bir kaynak yapılandırmak için sınıfını kullanın. Bu sınıfı bir olay günlüğünden okumak için kullanmak gerekli değildir.

Bu sınıf, yeni bir olay kaynağı ve ilişkili olay günlüğü için yapılandırma ayarlarını tanımlar. İlişkili olay günlüğü yerel bilgisayarda veya uzak bilgisayarda olabilir. Yerel bilgisayarda yeni veya var olan bir olay günlüğü için yeni bir kaynak oluşturmak için, öğesinin LogNameEventSourceCreationData ve Source özelliklerini ayarlayın ve yöntemini çağırınEventLog.CreateEventSource(EventSourceCreationData). Bu yöntem özelliğinde Source belirttiğiniz olay kaynağını oluşturur ve içinde LogNamebelirtilen olay günlüğüne kaydeder. Bu davranış, bir olay günlüğüne olay kaynağı kaydetmek için sınıfını EventLogInstaller kullanmaya benzer.

WriteEvent Olay günlüğüne olay yazmak için ve WriteEntry yöntemlerini kullanın. Olayları yazmak için bir olay kaynağı belirtmeniz gerekir; kaynakla ilk girdiyi yazmadan önce olay kaynağını oluşturup yapılandırmanız gerekir.

Uygulamanızın yüklenmesi sırasında yeni olay kaynağını oluşturun. Bu, işletim sisteminin kayıtlı olay kaynakları listesini ve yapılandırmalarını yenilemesine zaman tanır. İşletim sistemi olay kaynakları listesini yenilemediyse ve yeni kaynakla bir olay yazmaya çalışırsanız, yazma işlemi başarısız olur. Yeni bir kaynağı bir EventLogInstallerkullanarak veya yöntemini kullanarak CreateEventSource yapılandırabilirsiniz. Yeni bir olay kaynağı oluşturmak için bilgisayarda yönetici haklarına sahip olmanız gerekir.

Var olan bir olay günlüğü veya yeni bir olay günlüğü için olay kaynağı oluşturabilirsiniz. Yeni bir olay günlüğü için yeni bir kaynak oluşturduğunuzda, sistem söz konusu günlük için kaynağı kaydeder, ancak ilk giriş yazılana kadar günlük oluşturulmaz.

Her kaynak aynı anda yalnızca bir olay günlüğüne yazabilir; ancak uygulamanız birden çok olay günlüğüne yazmak için birden çok kaynak kullanabilir. Örneğin, uygulamanızın farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynağa ihtiyacı olabilir.

Var olan bir kaynağın yapılandırma ayrıntılarını değiştirmek için kaynağı silmeniz ve yeni yapılandırmayla oluşturmanız gerekir. Diğer uygulamalar veya bileşenler mevcut kaynağı kullanıyorsa, mevcut kaynağı silmek yerine güncelleştirilmiş yapılandırmayla yeni bir kaynak oluşturun.

Olay kategoriniz ve ileti dizeleriniz için olay kaynağını yerelleştirilmiş kaynaklara kaydedebilirsiniz. Uygulamanız gerçek dizeyi belirtmek yerine kaynak tanımlayıcılarını kullanarak olay günlüğü girdileri yazabilir. Olay Görüntüleyicisi, geçerli dil ayarlarına göre yerelleştirilmiş kaynak dosyasından karşılık gelen dizeyi bulmak ve görüntülemek için kaynak tanımlayıcısını kullanır. Olay kategorileri, iletiler ve parametre ekleme dizeleri için ayrı bir dosya kaydedebilir veya aynı kaynak dosyasını üç dize türü için de kaydedebilirsiniz. CategoryCountKaynağı olay günlüğüne yerelleştirilmiş girdiler yazacak şekilde yapılandırmak için , CategoryResourceFile, MessageResourceFileve ParameterResourceFile özelliklerini kullanın. Uygulamanız dize değerlerini doğrudan olay günlüğüne yazıyorsa, bu özellikleri ayarlamanız gerekmez.

Kaynak, yerelleştirilmiş girdiler yazmak veya doğrudan dizeler yazmak için yapılandırılmalıdır. WriteEntry yöntemi verilen dizeyi doğrudan olay günlüğüne yazar; yerelleştirilebilir bir ileti kaynak dosyası kullanmaz. WriteEvent Yerelleştirilmiş bir ileti kaynak dosyası kullanarak olayları yazmak için yöntemini kullanın.

Uygulamanız hem kaynak tanımlayıcılarını hem de dize değerlerini kullanarak girdi yazıyorsa, iki ayrı kaynak kaydetmeniz gerekir. Örneğin, kaynak dosyalarıyla bir kaynak yapılandırın ve ardından olay günlüğüne kaynak tanımlayıcılarını kullanarak girdi yazmak için yönteminde WriteEvent bu kaynağı kullanın. Ardından kaynak dosyaları olmadan farklı bir kaynak oluşturun ve yöntemdeki WriteEntry bu kaynağı kullanarak doğrudan olay günlüğüne dize yazmak için kullanın.

Oluşturucular

EventSourceCreationData(String, String)

Belirtilen olay kaynağı ve olay günlüğü adıyla sınıfının yeni bir örneğini EventSourceCreationData başlatır.

Özellikler

CategoryCount

Kategori kaynak dosyasındaki kategori sayısını alır veya ayarlar.

CategoryResourceFile

Kaynak için kategori dizelerini içeren kaynak dosyasının yolunu alır veya ayarlar.

LogName

Kaynağın girişleri yazdığı olay günlüğünün adını alır veya ayarlar.

MachineName

Olay kaynağının kaydedildiği bilgisayarın adını alır veya ayarlar.

MessageResourceFile

Kaynak için ileti biçimlendirme dizelerini içeren ileti kaynak dosyasının yolunu alır veya ayarlar.

ParameterResourceFile

Kaynak için ileti parametresi dizelerini içeren kaynak dosyasının yolunu alır veya ayarlar.

Source

Olay günlüğüyle bir olay kaynağı olarak kaydedilecek adı alır veya ayarlar.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.