Sdílet prostřednictvím


EventLog.CreateEventSource Metoda

Definice

Vytvoří aplikaci tak, aby mohla zapisovat informace o událostech do konkrétního protokolu v systému.

Přetížení

CreateEventSource(EventSourceCreationData)

Vytvoří platný zdroj událostí pro zápis lokalizovaných zpráv událostí pomocí zadaných vlastností konfigurace pro zdroj události a odpovídající protokol událostí.

CreateEventSource(String, String)

Vytvoří zadaný název zdroje jako platný zdroj události pro zápis položek do protokolu v místním počítači. Tato metoda může také vytvořit nový vlastní protokol v místním počítači.

CreateEventSource(String, String, String)
Zastaralé.
Zastaralé.
Zastaralé.

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v zadaném počítači. Tuto metodu lze také použít k vytvoření nového vlastního protokolu v zadaném počítači.

CreateEventSource(EventSourceCreationData)

Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs

Vytvoří platný zdroj událostí pro zápis lokalizovaných zpráv událostí pomocí zadaných vlastností konfigurace pro zdroj události a odpovídající protokol událostí.

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)

Parametry

sourceData
EventSourceCreationData

Vlastnosti konfigurace pro zdroj události a její cílový protokol událostí.

Výjimky

Název počítače zadaný v sourceData není platný.

-nebo-

Název zdroje zadaný v sourceData je null.

-nebo-

Název protokolu zadaný v sourceData není platný. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ?nebo \.

-nebo-

Název protokolu zadaný v sourceData není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití systému.

-nebo-

Název protokolu odpovídá existujícímu názvu zdroje událostí.

-nebo-

Název zdroje zadaný v sourceData vede k cestě klíče registru delší než 254 znaků.

-nebo-

Prvních 8 znaků názvu protokolu zadaného v sourceData není jedinečné.

-nebo-

Název zdroje zadaný v sourceData je již zaregistrovaný.

-nebo-

Název zdroje zadaný v sourceData odpovídá existujícímu názvu protokolu událostí.

Klíč registru pro protokol událostí nelze otevřít.

sourceData je null.

Příklady

Následující příklad určuje, zda zdroj události s názvem SampleApplicationSource je registrován v místním počítači. Pokud zdroj události neexistuje, příklad nastaví soubor prostředku zprávy pro zdroj a vytvoří nový zdroj události. Nakonec příklad nastaví lokalizovaný zobrazovaný název protokolu událostí pomocí hodnoty identifikátoru prostředku v DisplayNameMsgId a cestu k souboru prostředku v 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

Příklad používá následující textový soubor zprávy, integrovaný do knihovny prostředků EventLogMsgs.dll. Textový soubor zprávy je zdrojem, ze kterého se vytvoří soubor prostředku zprávy. Textový soubor zprávy definuje identifikátory prostředků a text pro řetězce vložení kategorie, zprávy události a parametru. Konkrétně je identifikátor prostředku 5001 definován pro lokalizovaný název protokolu událostí.

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

Poznámky

Toto přetížení slouží ke konfiguraci nového zdroje pro zápis položek do protokolu událostí v místním nebo vzdáleném počítači. Tuto metodu není nutné použít ke čtení z protokolu událostí.

Metoda CreateEventSource používá vstupní sourceDataSource, LogName a MachineName vlastnosti k vytvoření hodnot registru v cílovém počítači pro nový zdroj a jeho přidružený protokol událostí. Nový název zdroje nemůže odpovídat existujícímu názvu zdroje nebo existujícímu názvu protokolu událostí v cílovém počítači. Pokud LogName vlastnost není nastavena, zdroj je registrován pro protokol událostí aplikace. Pokud MachineName nenastavíte, zdroj se zaregistruje na místním počítači.

Poznámka

Chcete-li vytvořit zdroj událostí v systému Windows Vista a novější nebo Windows Server 2003, musíte mít oprávnění správce.

Důvodem tohoto požadavku je, že je nutné vyhledat všechny protokoly událostí, včetně zabezpečení, aby bylo možné určit, jestli je zdroj události jedinečný. Počínaje systémem Windows Vista nemají uživatelé oprávnění pro přístup k protokolu zabezpečení; proto je vyvolán SecurityException.

Počínaje systémem Windows Vista určuje řízení uživatelských účtů (UAC) oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazené dva přístupové tokeny za běhu: standardní přístupový token uživatele a přístupový token správce. Ve výchozím nastavení jste ve standardní roli uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění od standardního uživatele na správce. Můžete to udělat, když spustíte aplikaci tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete spustit jako správce.

K zápisu událostí do protokolu událostí použijte WriteEvent a WriteEntry. Je nutné zadat zdroj událostí pro zápis událostí; Před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Během instalace aplikace vytvořte nový zdroj událostí. Díky tomu může operační systém aktualizovat seznam registrovaných zdrojů událostí a jejich konfigurace. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí EventLogInstallernebo pomocí CreateEventSource metody. Abyste mohli vytvořit nový zdroj událostí, musíte mít na počítači oprávnění správce.

Můžete vytvořit zdroj událostí pro existující protokol událostí nebo nový protokol událostí. Když vytvoříte nový zdroj pro nový protokol událostí, systém zaregistruje zdroj pro tento protokol, ale protokol se nevytvoří, dokud se do něj nezapíše první položka.

Operační systém ukládá protokoly událostí jako soubory. Pokud použijete EventLogInstaller nebo CreateEventSource k vytvoření nového protokolu událostí, přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru je nastaven připojením prvních 8 znaků vlastnosti Log s příponou názvu souboru ".evt".

Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; Aplikace ale může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.

Zdroj událostí můžete zaregistrovat v lokalizovaných souborech prostředků pro kategorii událostí a řetězce zpráv. Aplikace může zapisovat položky protokolu událostí pomocí identifikátorů prostředků, a nikoli zadávat skutečný řetězec. Prohlížeč událostí používá identifikátor prostředku k vyhledání a zobrazení odpovídajícího řetězce z lokalizovaného souboru prostředků na základě aktuálního nastavení jazyka. Můžete zaregistrovat samostatný soubor pro kategorie událostí, zprávy a řetězce vložení parametrů nebo můžete zaregistrovat stejný soubor prostředků pro všechny tři typy řetězců. Ke konfiguraci zdroje pro zápis lokalizovaných položek do protokolu událostí použijte vlastnosti CategoryCount, CategoryResourceFile, MessageResourceFilea ParameterResourceFile. Pokud vaše aplikace zapisuje hodnoty řetězců přímo do protokolu událostí, nemusíte tyto vlastnosti nastavovat.

Zdroj musí být nakonfigurován buď pro zápis lokalizovaných položek, nebo pro zápis přímých řetězců. Pokud vaše aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v metodě WriteEvent k zápisu položek pomocí identifikátorů prostředků do protokolu událostí. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v metodě WriteEntry k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit pomocí nové konfigurace. Pokud existující zdroj používají jiné aplikace nebo komponenty, vytvořte nový zdroj s aktualizovanou konfigurací místo odstranění existujícího zdroje.

Poznámka

Pokud je zdroj nakonfigurovaný pro protokol událostí a překonfigurujete ho pro jiný protokol událostí, je nutné restartovat počítač, aby se změny projevily.

Viz také

Platí pro

CreateEventSource(String, String)

Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs

Vytvoří zadaný název zdroje jako platný zdroj události pro zápis položek do protokolu v místním počítači. Tato metoda může také vytvořit nový vlastní protokol v místním počítači.

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)

Parametry

source
String

Název zdroje, podle kterého je aplikace zaregistrovaná v místním počítači.

logName
String

Název protokolu, do které se zapisují položky zdroje. Mezi možné hodnoty patří Application, System nebo vlastní protokol událostí.

Výjimky

source je prázdný řetězec ("") nebo null.

-nebo-

logName není platný název protokolu událostí. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ?nebo \.

-nebo-

logName není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití systému.

-nebo-

Název protokolu odpovídá existujícímu názvu zdroje událostí.

-nebo-

Výsledkem názvu zdroje je cesta klíče registru delší než 254 znaků.

-nebo-

Prvních 8 znaků logName odpovídá prvním 8 znakům existujícího názvu protokolu událostí.

-nebo-

Zdroj nelze zaregistrovat, protože již existuje v místním počítači.

-nebo-

Název zdroje odpovídá existujícímu názvu protokolu událostí.

Klíč registru pro protokol událostí nelze otevřít v místním počítači.

Příklady

Následující příklad vytvoří zdroj MySource pokud ještě neexistuje, a zapíše položku do protokolu událostí 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

Poznámky

Toto přetížení použijte k vytvoření vlastního protokolu nebo k vytvoření a registraci Source do existujícího protokolu v místním počítači.

Pokud logName při volání CreateEventSourcenull nebo prázdný řetězec (""), protokol se použije jako výchozí pro protokol aplikace. Pokud protokol v místním počítači neexistuje, vytvoří systém vlastní protokol a zaregistruje aplikaci jako Source pro tento protokol.

Poznámka

Chcete-li vytvořit zdroj událostí v systému Windows Vista a novější nebo Windows Server 2003, musíte mít oprávnění správce.

Důvodem tohoto požadavku je, že je nutné vyhledat všechny protokoly událostí, včetně zabezpečení, aby bylo možné určit, jestli je zdroj události jedinečný. Počínaje systémem Windows Vista nemají uživatelé oprávnění pro přístup k protokolu zabezpečení; proto je vyvolán SecurityException.

V systému Windows Vista a novějších určuje řízení uživatelských účtů (UAC) oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazené dva přístupové tokeny za běhu: standardní přístupový token uživatele a přístupový token správce. Ve výchozím nastavení jste ve standardní roli uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění od standardního uživatele na správce. Můžete to udělat, když spustíte aplikaci tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete spustit jako správce.

Zdroj událostí je potřeba vytvořit pouze v případě, že píšete do protokolu událostí. Před zápisem položky do protokolu událostí musíte zdroj událostí zaregistrovat v protokolu událostí jako platný zdroj událostí. Při zápisu položky protokolu systém použije Source k vyhledání příslušného protokolu, do kterého se má položka umístit. Pokud čtete protokol událostí, můžete zadat Sourcenebo Log a MachineName.

Poznámka

Pokud se připojujete k protokolu v místním počítači, nemusíte zadávat MachineName. Pokud při čtení z protokolu nezadáte MachineName, předpokládá se místní počítač (".").

K zápisu událostí do protokolu událostí použijte WriteEvent a WriteEntry. Je nutné zadat zdroj událostí pro zápis událostí; Před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Během instalace aplikace vytvořte nový zdroj událostí. Díky tomu může operační systém aktualizovat seznam registrovaných zdrojů událostí a jejich konfigurace. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí EventLogInstallernebo pomocí CreateEventSource metody. Abyste mohli vytvořit nový zdroj událostí, musíte mít na počítači oprávnění správce.

Můžete vytvořit zdroj událostí pro existující protokol událostí nebo nový protokol událostí. Když vytvoříte nový zdroj pro nový protokol událostí, systém zaregistruje zdroj pro tento protokol, ale protokol se nevytvoří, dokud se do něj nezapíše první položka.

Operační systém ukládá protokoly událostí jako soubory. Pokud použijete EventLogInstaller nebo CreateEventSource k vytvoření nového protokolu událostí, přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru je nastaven připojením prvních 8 znaků vlastnosti Log s příponou názvu souboru ".evt".

Zdroj musí být v místním počítači jedinečný; Nový název zdroje nemůže odpovídat existujícímu názvu zdroje nebo existujícímu názvu protokolu událostí. Každý zdroj může najednou zapisovat pouze do jednoho protokolu událostí; Aplikace ale může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.

Zdroj musí být nakonfigurován buď pro zápis lokalizovaných položek, nebo pro zápis přímých řetězců. Pokud vaše aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v metodě WriteEvent k zápisu položek pomocí identifikátorů prostředků do protokolu událostí. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v metodě WriteEntry k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit pomocí nové konfigurace. Pokud existující zdroj používají jiné aplikace nebo komponenty, vytvořte nový zdroj s aktualizovanou konfigurací místo odstranění existujícího zdroje.

Poznámka

Pokud už byl zdroj namapován na protokol a znovu ho namapujete na nový protokol, je nutné restartovat počítač, aby se změny projevily.

Viz také

Platí pro

CreateEventSource(String, String, String)

Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs
Zdroj:
EventLog.cs

Upozornění

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

Upozornění

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

Upozornění

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

Vytvoří zadaný název zdroje jako platný zdroj událostí pro zápis položek do protokolu v zadaném počítači. Tuto metodu lze také použít k vytvoření nového vlastního protokolu v zadaném počítači.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::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")]
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.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
[<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
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parametry

source
String

Zdroj, podle kterého je aplikace zaregistrována v zadaném počítači.

logName
String

Název protokolu, do které se zapisují položky zdroje. Mezi možné hodnoty patří Application, System nebo vlastní protokol událostí. Pokud nezadáte hodnotu, logName výchozí nastavení aplikace.

machineName
String

Název počítače pro registraci tohoto zdroje událostí nebo ". pro místní počítač.

Atributy

Výjimky

machineName není platný název počítače.

-nebo-

source je prázdný řetězec ("") nebo null.

-nebo-

logName není platný název protokolu událostí. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ?nebo \.

-nebo-

logName není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití systému.

-nebo-

Název protokolu odpovídá existujícímu názvu zdroje událostí.

-nebo-

Výsledkem názvu zdroje je cesta klíče registru delší než 254 znaků.

-nebo-

Prvních 8 znaků logName odpovídá prvním 8 znakům existujícího názvu protokolu událostí v zadaném počítači.

-nebo-

Zdroj nelze zaregistrovat, protože již v zadaném počítači existuje.

-nebo-

Název zdroje odpovídá existujícímu názvu zdroje události.

Klíč registru pro protokol událostí nelze otevřít v zadaném počítači.

Příklady

Následující příklad vytvoří zdrojový MySource v počítači MyServera zapíše položku do protokolu událostí 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", "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

Poznámky

Toto přetížení použijte k vytvoření vlastního protokolu nebo k vytvoření a registraci Source do existujícího protokolu v zadaném počítači.

Pokud logName při volání CreateEventSourcenull nebo prázdný řetězec (""), protokol se použije jako výchozí pro protokol aplikace. Pokud protokol v zadaném počítači neexistuje, vytvoří systém vlastní protokol a zaregistruje aplikaci jako Source pro tento protokol.

Zdroj událostí je potřeba vytvořit pouze v případě, že píšete do protokolu událostí. Před zápisem položky do protokolu událostí musíte zdroj událostí zaregistrovat v protokolu událostí jako platný zdroj událostí. Při zápisu položky protokolu systém použije Source k vyhledání příslušného protokolu, do kterého se má položka umístit. Pokud čtete protokol událostí, můžete zadat Sourcenebo Log a MachineName.

Poznámka

Chcete-li vytvořit zdroj událostí v systému Windows Vista a novější nebo Windows Server 2003, musíte mít oprávnění správce.

Důvodem tohoto požadavku je, že je nutné vyhledat všechny protokoly událostí, včetně zabezpečení, aby bylo možné určit, jestli je zdroj události jedinečný. V systému Windows Vista a novější uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; proto je vyvolán SecurityException.

V systému Windows Vista a novějších určuje řízení uživatelských účtů (UAC) oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazené dva přístupové tokeny za běhu: standardní přístupový token uživatele a přístupový token správce. Ve výchozím nastavení jste ve standardní roli uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění od standardního uživatele na správce. Můžete to udělat, když spustíte aplikaci tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete spustit jako správce.

K zápisu událostí do protokolu událostí použijte WriteEvent a WriteEntry. Je nutné zadat zdroj událostí pro zápis událostí; Před zápisem první položky se zdrojem musíte vytvořit a nakonfigurovat zdroj událostí.

Během instalace aplikace vytvořte nový zdroj událostí. Díky tomu může operační systém aktualizovat seznam registrovaných zdrojů událostí a jejich konfigurace. Pokud operační systém neaktualizuje seznam zdrojů událostí a pokusíte se napsat událost s novým zdrojem, operace zápisu selže. Nový zdroj můžete nakonfigurovat pomocí EventLogInstallernebo pomocí CreateEventSource metody. Abyste mohli vytvořit nový zdroj událostí, musíte mít na počítači oprávnění správce.

Můžete vytvořit zdroj událostí pro existující protokol událostí nebo nový protokol událostí. Když vytvoříte nový zdroj pro nový protokol událostí, systém zaregistruje zdroj pro tento protokol, ale protokol se nevytvoří, dokud se do něj nezapíše první položka.

Operační systém ukládá protokoly událostí jako soubory. Pokud použijete EventLogInstaller nebo CreateEventSource k vytvoření nového protokolu událostí, přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru je nastaven připojením prvních 8 znaků vlastnosti Log s příponou názvu souboru ".evt".

Zdroj musí být v místním počítači jedinečný; Nový název zdroje nemůže odpovídat existujícímu názvu zdroje nebo existujícímu názvu protokolu událostí. Každý zdroj může najednou zapisovat pouze do jednoho protokolu událostí; Aplikace ale může k zápisu do více protokolů událostí použít více zdrojů. Vaše aplikace může například vyžadovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.

Zdroj musí být nakonfigurován buď pro zápis lokalizovaných položek, nebo pro zápis přímých řetězců. Pokud vaše aplikace zapisuje položky pomocí identifikátorů prostředků i řetězcových hodnot, musíte zaregistrovat dva samostatné zdroje. Například nakonfigurujte jeden zdroj se soubory prostředků a pak tento zdroj použijte v metodě WriteEvent k zápisu položek pomocí identifikátorů prostředků do protokolu událostí. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v metodě WriteEntry k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.

Pokud chcete změnit podrobnosti konfigurace existujícího zdroje, musíte zdroj odstranit a pak ho vytvořit pomocí nové konfigurace. Pokud existující zdroj používají jiné aplikace nebo komponenty, vytvořte nový zdroj s aktualizovanou konfigurací místo odstranění existujícího zdroje.

Poznámka

Pokud už byl zdroj namapován na protokol a znovu ho namapujete na nový protokol, je nutné restartovat počítač, aby se změny projevily.

Viz také

Platí pro