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 jako schopnou 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álostí a odpovídající protokol událostí. |
CreateEventSource(String, String) |
Vytvoří zadaný název zdroje jako platný zdroj událostí 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
Vytvoří platný zdroj událostí pro zápis lokalizovaných zpráv událostí pomocí zadaných vlastností konfigurace pro zdroj událostí 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 zdroje událostí a jeho cílového protokolu událostí.
Výjimky
Název počítače zadaný v sourceData
nástroji není platný.
-nebo-
Název zdroje zadaný v sourceData
souboru je null
.
-nebo-
Název protokolu zadaný v sourceData
souboru není platný. Názvy protokolů událostí musí obsahovat tisknutelné znaky a nesmí obsahovat znaky *, ? nebo \.
-nebo-
Název protokolu zadaný v sourceData
nástroji není platný pro vytvoření protokolu uživatele. Názvy protokolů událostí AppEvent, SysEvent a SecEvent jsou vyhrazené pro použití v systému.
-nebo-
Název protokolu odpovídá názvu existujícího zdroje událostí.
-nebo-
Výsledkem názvu zdroje zadaného v sourceData
je cesta ke klíči registru delší než 254 znaků.
-nebo-
Prvních 8 znaků názvu protokolu zadaného v sourceData
souboru není jedinečných.
-nebo-
Název zdroje zadaný v sourceData
souboru je již zaregistrován.
-nebo-
Název zdroje zadaný v sourceData
souboru odpovídá názvu existujícího 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 je zdroj událostí s názvem SampleApplicationSource
registrován v místním počítači. Pokud zdroj události neexistuje, příklad nastaví soubor prostředků zprávy pro zdroj a vytvoří nový zdroj událostí. Nakonec příklad nastaví lokalizovaný zobrazovaný název protokolu událostí pomocí hodnoty identifikátoru prostředku v DisplayNameMsgId
a cesty 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
V příkladu se používá následující textový soubor zprávy, který je integrovaný do knihovny prostředků EventLogMsgs.dll. Textový soubor zprávy je zdroj, ze kterého je vytvořen soubor prostředků zprávy. Textový soubor zprávy definuje identifikátory prostředků a text pro řetězce kategorie, zprávy události a vkládání parametrů. Konkrétně se pro lokalizovaný název protokolu událostí definuje identifikátor prostředku 5001.
; // 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žívat ke čtení z protokolu událostí.
Metoda CreateEventSource používá vstupní sourceData
Sourcevlastnosti , LogName a MachineName 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. LogName Pokud vlastnost není nastavená, zdroj se zaregistruje pro protokol událostí aplikace. MachineName Pokud není nastavena, zdroj se zaregistruje v místním počítači.
Poznámka
Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít oprávnění správce.
Důvodem tohoto požadavku je to, že všechny protokoly událostí, včetně zabezpečení, se musí prohledávat, aby se zjistilo, jestli je zdroj událostí jedinečný. Počínaje systémem Windows Vista uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .
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řazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete aplikaci 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í.
Create nový zdroj událostí během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. 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í EventLogInstaller, nebo pomocí CreateEventSource metody . K vytvoření nového zdroje událostí musíte mít v 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 do něj není zapsána první položka.
Operační systém ukládá protokoly událostí jako soubory. Pokud k vytvoření nového protokolu událostí použijete EventLogInstaller nebo CreateEventSource , přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru se nastaví připojením prvních 8 znaků Log vlastnosti k příponě názvu souboru ".evt".
Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však 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 pomocí lokalizovaných souborů prostředků pro vaši kategorii událostí a řetězce zpráv. Vaše aplikace může zapisovat položky protokolu událostí pomocí identifikátorů prostředků, místo aby určila 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 vkládání parametrů nebo můžete zaregistrovat stejný soubor prostředků pro všechny tři typy řetězců. CategoryCountPomocí vlastností , CategoryResourceFile, MessageResourceFilea ParameterResourceFile nakonfigurujte zdroj pro zápis lokalizovaných položek do protokolu událostí. 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 pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud 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 WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě 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 s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.
Poznámka
Pokud je zdroj nakonfigurovaný pro protokol událostí a překonfigurujete ho na jiný protokol událostí, musíte restartovat počítač, aby se změny projevily.
Viz také
Platí pro
CreateEventSource(String, String)
- Zdroj:
- EventLog.cs
- Zdroj:
- EventLog.cs
- Zdroj:
- EventLog.cs
Vytvoří zadaný název zdroje jako platný zdroj událostí 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 registrována v místním počítači.
- logName
- String
Název protokolu, do který se zapisují zdrojové položky. Mezi možné hodnoty patří aplikace, systém 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í v systému.
-nebo-
Název protokolu odpovídá názvu existujícího zdroje událostí.
-nebo-
Výsledkem názvu zdroje je cesta ke klíči registru delší než 254 znaků.
-nebo-
Prvních 8 znaků odpovídá logName
prvním 8 znakům existujícího názvu protokolu událostí.
-nebo-
Zdroj nelze zaregistrovat, protože již v místním počítači existuje.
-nebo-
Název zdroje odpovídá názvu existujícího 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 MyNewLog
událostí .
#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
je null
nebo prázdný řetězec ("") při volání CreateEventSource, protokol se ve výchozím nastavení použije k aplikačnímu protokolu. Pokud protokol v místním počítači neexistuje, systém vytvoří vlastní protokol a zaregistruje aplikaci jako Source pro tento protokol.
Poznámka
Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít oprávnění správce.
Důvodem tohoto požadavku je to, že všechny protokoly událostí, včetně zabezpečení, se musí prohledávat, aby se zjistilo, jestli je zdroj událostí jedinečný. Počínaje systémem Windows Vista uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .
Nástroj Řízení uživatelských účtů (UAC) v systému Windows Vista a novějším určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete aplikaci spustit jako správce.
Zdroj událostí potřebujete vytvořit pouze v případě, že zapisujete do protokolu událostí. Před zápisem položky do protokolu událostí musíte zaregistrovat zdroj událostí v protokolu událostí jako platný zdroj událostí. Při zápisu položky protokolu systém použije Source k vyhledání vhodného protokolu, do kterého se má položka umístit. Pokud čtete protokol událostí, můžete zadat Source, nebo Log a MachineName.
Poznámka
Pokud se připojujete k protokolu v místním počítači, není nutné zadat MachineName parametr . Pokud při čtení z protokolu nezadáte MachineName parametr , 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í.
Create nový zdroj událostí během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. 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í EventLogInstaller, nebo pomocí CreateEventSource metody . K vytvoření nového zdroje událostí musíte mít v 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 do něj není zapsána první položka.
Operační systém ukládá protokoly událostí jako soubory. Pokud k vytvoření nového protokolu událostí použijete EventLogInstaller nebo CreateEventSource , přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru se nastaví připojením prvních 8 znaků Log vlastnosti k příponě názvu souboru ".evt".
Zdroj musí být v místním počítači jedinečný. nový název zdroje se nemůže shodovat s existujícím názvem zdroje nebo názvem existujícího protokolu událostí. Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však 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 pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud 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 WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě 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 s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.
Poznámka
Pokud již byl zdroj namapován na protokol a přemapujete ho 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
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
Upozornění
EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.
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("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)
Parametry
- source
- String
Zdroj, podle kterého je aplikace registrována v zadaném počítači.
- logName
- String
Název protokolu, do který se zapisují zdrojové položky. Mezi možné hodnoty patří aplikace, systém nebo vlastní protokol událostí. Pokud nezadáte hodnotu, logName
výchozí hodnota bude Application (Aplikace).
- machineName
- String
Název počítače pro registraci tohoto zdroje událostí nebo "." pro místní počítač.
- Atributy
Výjimky
Není machineName
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í v systému.
-nebo-
Název protokolu odpovídá názvu existujícího zdroje událostí.
-nebo-
Výsledkem názvu zdroje je cesta ke klíči registru delší než 254 znaků.
-nebo-
Prvních 8 znaků odpovídá logName
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álostí.
Klíč registru pro protokol událostí nelze v zadaném počítači otevřít.
Příklady
Následující příklad vytvoří zdroj MySource
v počítači MyServer
a zapíše položku do protokolu MyNewLog
událostí .
#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 existujícího protokolu v zadaném počítači.
Pokud logName
je null
nebo prázdný řetězec ("") při volání CreateEventSource, protokol se ve výchozím nastavení použije k aplikačnímu protokolu. Pokud protokol v zadaném počítači neexistuje, systém vytvoří vlastní protokol a zaregistruje aplikaci jako Source pro tento protokol.
Zdroj událostí potřebujete vytvořit pouze v případě, že zapisujete do protokolu událostí. Před zápisem položky do protokolu událostí musíte zaregistrovat zdroj událostí v protokolu událostí jako platný zdroj událostí. Při zápisu položky protokolu systém použije Source k vyhledání vhodného protokolu, do kterého se má položka umístit. Pokud čtete protokol událostí, můžete zadat Source, nebo Log a MachineName.
Poznámka
Pokud chcete vytvořit zdroj událostí v systému Windows Vista a novějším nebo Windows Serveru 2003, musíte mít oprávnění správce.
Důvodem tohoto požadavku je to, že všechny protokoly událostí, včetně zabezpečení, se musí prohledávat, aby se zjistilo, jestli je zdroj událostí jedinečný. V systému Windows Vista a novější uživatelé nemají oprávnění pro přístup k protokolu zabezpečení; SecurityException proto je vyvolán .
Nástroj Řízení uživatelských účtů (UAC) v systému Windows Vista a novějším určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který přistupuje k protokolu zabezpečení, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem myši na ikonu aplikace a označíte, že chcete aplikaci 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í.
Create nový zdroj událostí během instalace aplikace. Operační systém tak může aktualizovat seznam registrovaných zdrojů událostí a jejich konfiguraci. 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í EventLogInstaller, nebo pomocí CreateEventSource metody . K vytvoření nového zdroje událostí musíte mít v 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 do něj není zapsána první položka.
Operační systém ukládá protokoly událostí jako soubory. Pokud k vytvoření nového protokolu událostí použijete EventLogInstaller nebo CreateEventSource , přidružený soubor se uloží do adresáře %SystemRoot%\System32\Config v zadaném počítači. Název souboru se nastaví připojením prvních 8 znaků Log vlastnosti k příponě názvu souboru ".evt".
Zdroj musí být v místním počítači jedinečný. nový název zdroje se nemůže shodovat s existujícím názvem zdroje nebo názvem existujícího protokolu událostí. Každý zdroj může zapisovat pouze do jednoho protokolu událostí najednou; aplikace však 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 pro zápis lokalizovaných položek nebo pro zápis přímých řetězců. Pokud 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 WriteEvent metodě k zápisu položek do protokolu událostí pomocí identifikátorů prostředků. Pak vytvořte jiný zdroj bez souborů prostředků a použijte tento zdroj v WriteEntry metodě 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 s novou konfigurací. Pokud existující zdroj používají jiné aplikace nebo komponenty, místo odstranění existujícího zdroje vytvořte nový zdroj s aktualizovanou konfigurací.
Poznámka
Pokud již byl zdroj namapován na protokol a přemapujete ho na nový protokol, je nutné restartovat počítač, aby se změny projevily.
Viz také
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro