EventLog.CreateEventSource Yöntem

Tanım

Sistemdeki belirli bir günlüğe olay bilgileri yazabilen bir uygulama oluşturur.

Aşırı Yüklemeler

CreateEventSource(EventSourceCreationData)

Olay kaynağı ve ilgili olay günlüğü için belirtilen yapılandırma özelliklerini kullanarak yerelleştirilmiş olay iletileri yazmak için geçerli bir olay kaynağı oluşturur.

CreateEventSource(String, String)

Belirtilen kaynak adını, yerel bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, yerel bilgisayarda yeni bir özel günlük de oluşturabilir.

CreateEventSource(String, String, String)
Geçersiz.
Geçersiz.
Geçersiz.

Belirtilen kaynak adını, belirtilen bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, belirtilen bilgisayarda yeni bir özel günlük oluşturmak için de kullanılabilir.

CreateEventSource(EventSourceCreationData)

Kaynak:
EventLog.cs
Kaynak:
EventLog.cs
Kaynak:
EventLog.cs

Olay kaynağı ve ilgili olay günlüğü için belirtilen yapılandırma özelliklerini kullanarak yerelleştirilmiş olay iletileri yazmak için geçerli bir olay kaynağı oluşturur.

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)

Parametreler

sourceData
EventSourceCreationData

Olay kaynağının ve hedef olay günlüğünün yapılandırma özellikleri.

Özel durumlar

içinde sourceData belirtilen bilgisayar adı geçerli değil.

-veya-

içinde sourceData belirtilen kaynak adı: null.

-veya-

içinde sourceData belirtilen günlük adı geçerli değil. Olay günlüğü adları yazdırılabilir karakterlerden oluşmalıdır ve '*', '?' veya '\' karakterlerini içeremez.

-veya-

içinde sourceData belirtilen günlük adı kullanıcı günlüğü oluşturma için geçerli değil. AppEvent, SysEvent ve SecEvent olay günlüğü adları sistem kullanımı için ayrılmıştır.

-veya-

Günlük adı var olan bir olay kaynağı adıyla eşleşir.

-veya-

'de sourceData belirtilen kaynak adı, 254 karakterden uzun bir kayıt defteri anahtar yoluyla sonuçlandır.

-veya-

içinde belirtilen sourceData günlük adının ilk 8 karakteri benzersiz değildir.

-veya-

içinde sourceData belirtilen kaynak adı zaten kayıtlı.

-veya-

içinde sourceData belirtilen kaynak adı var olan bir olay günlüğü adıyla eşleşir.

Olay günlüğü için kayıt defteri anahtarı açılamadı.

sourceData, null değeridir.

Örnekler

Aşağıdaki örnek adlı SampleApplicationSource olay kaynağının yerel bilgisayarda kayıtlı olup olmadığını belirler. Olay kaynağı yoksa, örnek kaynak için ileti kaynak dosyasını ayarlar ve yeni olay kaynağını oluşturur. Son olarak örnek, içindeki kaynak tanımlayıcı değerini ve içindeki DisplayNameMsgId kaynak dosyası yolunu messageFilekullanarak olay günlüğü için yerelleştirilmiş görünen adı ayarlar.

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

Örnek, kaynak kitaplığı EventLogMsgs.dll yerleşik olarak aşağıdaki ileti metin dosyasını kullanır. İleti metin dosyası, ileti kaynak dosyasının oluşturulduğu kaynaktır. İleti metin dosyası, kategori, olay iletisi ve parametre ekleme dizeleri için kaynak tanımlayıcılarını ve metni tanımlar. Özellikle, olay günlüğünün yerelleştirilmiş adı için kaynak tanımlayıcısı 5001 tanımlanır.

; // 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  
.  

Açıklamalar

Yerel bilgisayardaki veya uzak bilgisayardaki bir olay günlüğüne girdi yazmak için yeni bir kaynak yapılandırmak için bu aşırı yüklemeyi kullanın. Bir olay günlüğünden okumak için bu yöntemi kullanmak gerekli değildir.

yöntemi, CreateEventSourceLogName yeni kaynak ve MachineName ilişkili olay günlüğü için hedef bilgisayarda kayıt defteri değerleri oluşturmak üzere girdisini sourceDataSourceve özelliklerini kullanır. Yeni bir kaynak adı, hedef bilgisayardaki mevcut bir kaynak adı veya var olan bir olay günlüğü adıyla eşleşemez. LogName Özellik ayarlanmadıysa, kaynak Uygulama olay günlüğü için kaydedilir. MachineName ayarlanmadıysa, kaynak yerel bilgisayarda kayıtlıdır.

Not

Windows Vista ve sonraki sürümlerde veya Windows Server 2003'te olay kaynağı oluşturmak için yönetici ayrıcalıklarına sahip olmanız gerekir.

Bu gereksinimin nedeni, olay kaynağının benzersiz olup olmadığını belirlemek için güvenlik de dahil olmak üzere tüm olay günlüklerinin aranması gerektiğidir. Windows Vista'dan başlayarak, kullanıcıların güvenlik günlüğüne erişim izni yoktur; bu nedenle, bir SecurityException oluşturulur.

Windows Vista'dan başlayarak, Kullanıcı Hesabı Denetimi (UAC) bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Güvenlik günlüğüne erişen kodu yürütmek için öncelikle ayrıcalıklarınızı standart kullanıcıdan yöneticiye yükseltmeniz gerekir. Bir uygulamayı başlattığınızda, uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek bunu yapabilirsiniz.

Olay günlüğüne olay yazmak için ve WriteEntry kullanınWriteEvent. 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ı İçerik Oluşturucu. 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.

Mevcut 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.

İşletim sistemi olay günlüklerini dosya olarak depolar. veya CreateEventSource kullanarak EventLogInstaller yeni bir olay günlüğü oluşturduğunuzda, ilişkili dosya belirtilen bilgisayardaki %SystemRoot%\System32\Config dizininde depolanır. Dosya adı, özelliğin ilk 8 karakteri Log ".evt" dosya adı uzantısıyla eklenerek ayarlanır.

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 farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynak gerektirebilir.

Olay kategoriniz ve ileti dizeleriniz için olay kaynağını yerelleştirilmiş kaynak dosyalarına 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. 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öntemde WriteEntry bu kaynağı kullanarak dizeleri doğrudan olay günlüğüne yazmak için kullanın.

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.

Not

Bir kaynak bir olay günlüğü için yapılandırılmışsa ve bunu başka bir olay günlüğü için yeniden yapılandırdıysanız, değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekir.

Ayrıca bkz.

Şunlara uygulanır

CreateEventSource(String, String)

Kaynak:
EventLog.cs
Kaynak:
EventLog.cs
Kaynak:
EventLog.cs

Belirtilen kaynak adını, yerel bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, yerel bilgisayarda yeni bir özel günlük de oluşturabilir.

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)

Parametreler

source
String

Uygulamanın yerel bilgisayarda kayıtlı olduğu kaynak adı.

logName
String

Kaynağın girdilerinin yazıldık günlüğün adı. Olası değerler Uygulama, Sistem veya özel bir olay günlüğüdür.

Özel durumlar

source boş bir dize ("") veya null.

-veya-

logName geçerli bir olay günlüğü adı değil. Olay günlüğü adları yazdırılabilir karakterlerden oluşmalıdır ve '*', '?' veya '\' karakterlerini içeremez.

-veya-

logName kullanıcı günlüğü oluşturma için geçerli değil. AppEvent, SysEvent ve SecEvent olay günlüğü adları sistem kullanımı için ayrılmıştır.

-veya-

Günlük adı var olan bir olay kaynağı adıyla eşleşir.

-veya-

Kaynak adı, kayıt defteri anahtarı yolunun 254 karakterden uzun olmasına neden olur.

-veya-

öğesinin logName ilk 8 karakteri, mevcut olay günlüğü adının ilk 8 karakteriyle eşleşer.

-veya-

Kaynak yerel bilgisayarda zaten var olduğundan kaydedilemiyor.

-veya-

Kaynak ad, var olan bir olay günlüğü adıyla eşleşir.

Olay günlüğünün kayıt defteri anahtarı yerel bilgisayarda açılamadı.

Örnekler

Aşağıdaki örnek, henüz yoksa kaynağı MySource oluşturur ve olay günlüğüne MyNewLogbir girdi yazar.

#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

Açıklamalar

Özel bir günlük oluşturmak veya yerel bilgisayarda var olan bir günlüğü oluşturup kaydetmek Source için bu aşırı yüklemeyi kullanın.

null çağrısı logName yaptığınızda CreateEventSourceise veya boş bir dize (""), günlük varsayılan olarak Uygulama günlüğüne ayarlanır. Günlük yerel bilgisayarda yoksa sistem özel bir günlük oluşturur ve uygulamanızı bu günlük için olarak Source kaydeder.

Not

Windows Vista ve sonraki sürümlerde veya Windows Server 2003'te olay kaynağı oluşturmak için yönetici ayrıcalıklarına sahip olmanız gerekir.

Bu gereksinimin nedeni, olay kaynağının benzersiz olup olmadığını belirlemek için güvenlik de dahil olmak üzere tüm olay günlüklerinin aranması gerektiğidir. Windows Vista'dan başlayarak, kullanıcıların güvenlik günlüğüne erişim izni yoktur; bu nedenle, bir SecurityException oluşturulur.

Windows Vista ve sonraki sürümlerde, Kullanıcı Hesabı Denetimi (UAC) bir kullanıcının ayrıcalıkları belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Güvenlik günlüğüne erişen kodu yürütmek için öncelikle ayrıcalıklarınızı standart kullanıcıdan yöneticiye yükseltmeniz gerekir. Bir uygulamayı başlattığınızda, uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek bunu yapabilirsiniz.

Yalnızca olay günlüğüne yazıyorsanız bir olay kaynağı oluşturmanız gerekir. Bir olay günlüğüne giriş yazmadan önce, olay kaynağını olay günlüğüyle geçerli bir olay kaynağı olarak kaydetmeniz gerekir. Bir günlük girdisi yazdığınızda, sistem girdinizin yerleştirildiği uygun günlüğü bulmak için öğesini kullanır Source . Olay günlüğünü okuyorsanız , veya Log ve MachineNamebelirtebilirsinizSource.

Not

Yerel bilgisayardaki bir günlüğe bağlanıyorsanız öğesini belirtmeniz MachineName gerekmez. Günlükten okurken değerini MachineName belirtmezseniz, yerel bilgisayar (".") varsayılır.

Olay günlüğüne olay yazmak için ve WriteEntry kullanınWriteEvent. 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ı İçerik Oluşturucu. 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.

Mevcut 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.

İşletim sistemi olay günlüklerini dosya olarak depolar. veya CreateEventSource kullanarak EventLogInstaller yeni bir olay günlüğü oluşturduğunuzda, ilişkili dosya belirtilen bilgisayardaki %SystemRoot%\System32\Config dizininde depolanır. Dosya adı, özelliğin ilk 8 karakteri Log ".evt" dosya adı uzantısıyla eklenerek ayarlanır.

Kaynak yerel bilgisayarda benzersiz olmalıdır; yeni bir kaynak adı, var olan bir kaynak adı veya var olan bir olay günlüğü adıyla eşleşemez. 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 farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynak gerektirebilir.

Kaynak, yerelleştirilmiş girdiler yazmak veya doğrudan dizeler yazmak için yapılandırılmalıdır. 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öntemde WriteEntry bu kaynağı kullanarak dizeleri doğrudan olay günlüğüne yazmak için kullanın.

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.

Not

Bir kaynak zaten bir günlüğe eşlenmişse ve bunu yeni bir günlükle yeniden eşlerseniz, değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekir.

Ayrıca bkz.

Şunlara uygulanır

CreateEventSource(String, String, String)

Kaynak:
EventLog.cs
Kaynak:
EventLog.cs
Kaynak:
EventLog.cs

Dikkat

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

Dikkat

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

Dikkat

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

Belirtilen kaynak adını, belirtilen bilgisayardaki bir günlüğe girdi yazmak için geçerli bir olay kaynağı olarak oluşturur. Bu yöntem, belirtilen bilgisayarda yeni bir özel günlük oluşturmak için de kullanılabilir.

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)

Parametreler

source
String

Uygulamanın belirtilen bilgisayarda kayıtlı olduğu kaynak.

logName
String

Kaynağın girdilerinin yazıldık günlüğün adı. Olası değerler Uygulama, Sistem veya özel bir olay günlüğüdür. Bir değer belirtmezseniz, logName varsayılan olarak Uygulama'yı kullanır.

machineName
String

Bu olay kaynağını kaydedecek bilgisayarın adı veya yerel bilgisayar için "." .

Öznitelikler

Özel durumlar

machineName geçerli bir bilgisayar adı değil.

-veya-

source boş bir dize ("") veya null.

-veya-

logName geçerli bir olay günlüğü adı değil. Olay günlüğü adları yazdırılabilir karakterlerden oluşmalıdır ve '*', '?' veya '\' karakterlerini içeremez.

-veya-

logName kullanıcı günlüğü oluşturma için geçerli değil. AppEvent, SysEvent ve SecEvent olay günlüğü adları sistem kullanımı için ayrılmıştır.

-veya-

Günlük adı var olan bir olay kaynağı adıyla eşleşir.

-veya-

Kaynak adı, kayıt defteri anahtarı yolunun 254 karakterden uzun olmasına neden olur.

-veya-

öğesinin logName ilk 8 karakteri, belirtilen bilgisayardaki mevcut bir olay günlüğü adının ilk 8 karakteriyle eşleşebilir.

-veya-

Belirtilen bilgisayarda zaten var olduğundan kaynak kaydedilemiyor.

-veya-

Kaynak adı var olan bir olay kaynağı adıyla eşleşir.

Olay günlüğünün kayıt defteri anahtarı belirtilen bilgisayarda açılamadı.

Örnekler

Aşağıdaki örnek, bilgisayarda MyServerkaynağını MySource oluşturur ve olay günlüğüne MyNewLogbir girdi yazar.

#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

Açıklamalar

Özel bir günlük oluşturmak veya belirtilen bilgisayarda var olan bir günlük oluşturup kaydetmek Source için bu aşırı yüklemeyi kullanın.

null çağrısı logName yaptığınızda CreateEventSourceise veya boş bir dize (""), günlük varsayılan olarak Uygulama günlüğüne ayarlanır. Belirtilen bilgisayarda günlük yoksa sistem özel bir günlük oluşturur ve uygulamanızı bu günlük için olarak Source kaydeder.

Yalnızca olay günlüğüne yazıyorsanız bir olay kaynağı oluşturmanız gerekir. Bir olay günlüğüne giriş yazmadan önce, olay kaynağını olay günlüğüyle geçerli bir olay kaynağı olarak kaydetmeniz gerekir. Bir günlük girdisi yazdığınızda, sistem girdinizin yerleştirildiği uygun günlüğü bulmak için öğesini kullanır Source . Olay günlüğünü okuyorsanız , veya Log ve MachineNamebelirtebilirsinizSource.

Not

Windows Vista ve sonraki sürümlerde veya Windows Server 2003'te olay kaynağı oluşturmak için yönetici ayrıcalıklarına sahip olmanız gerekir.

Bu gereksinimin nedeni, olay kaynağının benzersiz olup olmadığını belirlemek için güvenlik de dahil olmak üzere tüm olay günlüklerinin aranması gerektiğidir. Windows Vista ve sonraki sürümlerde kullanıcıların güvenlik günlüğüne erişim izni yoktur; bu nedenle, bir SecurityException oluşturulur.

Windows Vista ve sonraki sürümlerde, Kullanıcı Hesabı Denetimi (UAC) bir kullanıcının ayrıcalıkları belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Güvenlik günlüğüne erişen kodu yürütmek için öncelikle ayrıcalıklarınızı standart kullanıcıdan yöneticiye yükseltmeniz gerekir. Bir uygulamayı başlattığınızda, uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek bunu yapabilirsiniz.

Olay günlüğüne olay yazmak için ve WriteEntry kullanınWriteEvent. 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ı İçerik Oluşturucu. 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.

Mevcut 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.

İşletim sistemi olay günlüklerini dosya olarak depolar. veya CreateEventSource kullanarak EventLogInstaller yeni bir olay günlüğü oluşturduğunuzda, ilişkili dosya belirtilen bilgisayardaki %SystemRoot%\System32\Config dizininde depolanır. Dosya adı, özelliğin ilk 8 karakteri Log ".evt" dosya adı uzantısıyla eklenerek ayarlanır.

Kaynak yerel bilgisayarda benzersiz olmalıdır; yeni bir kaynak adı, var olan bir kaynak adı veya var olan bir olay günlüğü adıyla eşleşemez. 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 farklı olay günlükleri veya farklı kaynak dosyaları için yapılandırılmış birden çok kaynak gerektirebilir.

Kaynak, yerelleştirilmiş girdiler yazmak veya doğrudan dizeler yazmak için yapılandırılmalıdır. 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öntemde WriteEntry bu kaynağı kullanarak dizeleri doğrudan olay günlüğüne yazmak için kullanın.

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.

Not

Bir kaynak zaten bir günlüğe eşlenmişse ve bunu yeni bir günlükle yeniden eşlerseniz, değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekir.

Ayrıca bkz.

Şunlara uygulanır