EventLog.CreateEventSource Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í sourceData
Source, 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 MyServer
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", "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.