EventSourceCreationData Třída
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í.
Představuje nastavení konfigurace použité k vytvoření zdroje protokolu událostí v místním nebo vzdáleném počítači.
public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
- Dědičnost
-
EventSourceCreationData
Příklady
Následující příklad kódu nastaví vlastnosti konfigurace pro zdroj událostí z argumentů příkazového řádku. Vstupní argumenty určují název zdroje událostí, název protokolu událostí, název počítače a soubor prostředku zprávy události. Příklad kódu ověří, že zdroj není v konfliktu s existujícím zdrojem událostí, a pak vytvoří nový zdroj událostí pro zadaný protokol událostí.
#using <System.dll>
using namespace System;
using namespace System::Globalization;
using namespace System::Diagnostics;
[STAThread]
int main()
{
array<String^>^args = Environment::GetCommandLineArgs();
EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( "","" );
bool registerSource = true;
// Process input parameters.
if ( args->Length > 1 )
{
// Require at least the source name.
mySourceData->Source = args[ 1 ];
if ( args->Length > 2 )
{
mySourceData->LogName = args[ 2 ];
}
if ( args->Length > 3 )
{
mySourceData->MachineName = args[ 3 ];
}
if ( (args->Length > 4) && (args[ 4 ]->Length > 0) )
{
mySourceData->MessageResourceFile = args[ 4 ];
}
}
else
{
// Display a syntax help message.
Console::WriteLine( "Input:" );
Console::WriteLine( " source [event log] [machine name] [resource file]" );
registerSource = false;
}
// Set defaults for parameters missing input.
if ( mySourceData->MachineName->Length == 0 )
{
// Default to the local computer.
mySourceData->MachineName = ".";
}
if ( mySourceData->LogName->Length == 0 )
{
// Default to the Application log.
mySourceData->LogName = "Application";
}
// Determine if the source exists on the specified computer.
if ( !EventLog::SourceExists( mySourceData->Source, mySourceData->MachineName ) )
{
// The source does not exist.
// Verify that the message file exists
// and the event log is local.
if ( (mySourceData->MessageResourceFile != nullptr) && (mySourceData->MessageResourceFile->Length > 0) )
{
if ( mySourceData->MachineName->Equals( "." ) )
{
if ( !System::IO::File::Exists( mySourceData->MessageResourceFile ) )
{
Console::WriteLine( "File {0} not found - message file not set for source.", mySourceData->MessageResourceFile );
registerSource = false;
}
}
else
{
// For simplicity, do not allow setting the message
// file for a remote event log. To set the message
// for a remote event log, and for source registration,
// the file path should be specified with system-wide
// environment variables that are valid on the remote
// computer, such as
// "%SystemRoot%\system32\myresource.dll".
Console::WriteLine( "Message resource file ignored for remote event log." );
registerSource = false;
}
}
}
else
{
// Do not register the source, it already exists.
registerSource = false;
// Get the event log corresponding to the existing source.
String^ sourceLog;
sourceLog = EventLog::LogNameFromSourceName( mySourceData->Source, mySourceData->MachineName );
// Determine if the event source is registered for the
// specified log.
if ( sourceLog->ToUpper( CultureInfo::InvariantCulture ) != mySourceData->LogName->ToUpper( CultureInfo::InvariantCulture ) )
{
// An existing source is registered
// to write to a different event log.
Console::WriteLine( "Warning: source {0} is already registered to write to event log {1}", mySourceData->Source, sourceLog );
}
else
{
// The source is already registered
// to write to the specified event log.
Console::WriteLine( "Source {0} already registered to write to event log {1}", mySourceData->Source, sourceLog );
}
}
if ( registerSource )
{
// Register the new event source for the specified event log.
Console::WriteLine( "Registering new source {0} for event log {1}.", mySourceData->Source, mySourceData->LogName );
EventLog::CreateEventSource( mySourceData );
Console::WriteLine( "Event source was registered successfully!" );
}
}
using System;
using System.Globalization;
using System.Diagnostics;
namespace EventLogSamples
{
class CreateSourceSample
{
[STAThread]
static void Main(string[] args)
{
EventSourceCreationData mySourceData = new EventSourceCreationData("", "");
bool registerSource = true;
// Process input parameters.
if (args.Length > 0)
{
// Require at least the source name.
mySourceData.Source = args[0];
if (args.Length > 1)
{
mySourceData.LogName = args[1];
}
if (args.Length > 2)
{
mySourceData.MachineName = args[2];
}
if ((args.Length > 3) && (args[3].Length > 0))
{
mySourceData.MessageResourceFile = args[3];
}
}
else
{
// Display a syntax help message.
Console.WriteLine("Input:");
Console.WriteLine(" source [event log] [machine name] [resource file]");
registerSource = false;
}
// Set defaults for parameters missing input.
if (mySourceData.MachineName.Length == 0)
{
// Default to the local computer.
mySourceData.MachineName = ".";
}
if (mySourceData.LogName.Length == 0)
{
// Default to the Application log.
mySourceData.LogName = "Application";
}
// Determine if the source exists on the specified computer.
if (!EventLog.SourceExists(mySourceData.Source,
mySourceData.MachineName))
{
// The source does not exist.
// Verify that the message file exists
// and the event log is local.
if ((mySourceData.MessageResourceFile != null) &&
(mySourceData.MessageResourceFile.Length > 0))
{
if (mySourceData.MachineName == ".")
{
if (!System.IO.File.Exists(mySourceData.MessageResourceFile))
{
Console.WriteLine("File {0} not found - message file not set for source.",
mySourceData.MessageResourceFile);
registerSource = false;
}
}
else
{
// For simplicity, do not allow setting the message
// file for a remote event log. To set the message
// for a remote event log, and for source registration,
// the file path should be specified with system-wide
// environment variables that are valid on the remote
// computer, such as
// "%SystemRoot%\system32\myresource.dll".
Console.WriteLine("Message resource file ignored for remote event log.");
registerSource = false;
}
}
}
else
{
// Do not register the source, it already exists.
registerSource = false;
// Get the event log corresponding to the existing source.
string sourceLog;
sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source,
mySourceData.MachineName);
// Determine if the event source is registered for the
// specified log.
if (sourceLog.ToUpper(CultureInfo.InvariantCulture) != mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture))
{
// An existing source is registered
// to write to a different event log.
Console.WriteLine("Warning: source {0} is already registered to write to event log {1}",
mySourceData.Source, sourceLog);
}
else
{
// The source is already registered
// to write to the specified event log.
Console.WriteLine("Source {0} already registered to write to event log {1}",
mySourceData.Source, sourceLog);
}
}
if (registerSource)
{
// Register the new event source for the specified event log.
Console.WriteLine("Registering new source {0} for event log {1}.",
mySourceData.Source, mySourceData.LogName);
EventLog.CreateEventSource(mySourceData);
Console.WriteLine("Event source was registered successfully!");
}
}
}
}
Imports System.Globalization
Imports System.Diagnostics
Namespace EventLogSamples
Class CreateSourceSample
Public Shared Sub Main(ByVal args() As String)
Dim mySourceData As EventSourceCreationData = new EventSourceCreationData("", "")
Dim registerSource As Boolean = True
' Process input parameters.
If args.Length > 0
' Require at least the source name.
mySourceData.Source = args(0)
If args.Length > 1
mySourceData.LogName = args(1)
End If
If args.Length > 2
mySourceData.MachineName = args(2)
End If
If args.Length > 3 AndAlso args(3).Length > 0
mySourceData.MessageResourceFile = args(3)
End If
Else
' Display a syntax help message.
Console.WriteLine("Input:")
Console.WriteLine(" source [event log] [machine name] [resource file]")
registerSource = False
End If
' Set defaults for parameters missing input.
If mySourceData.MachineName.Length = 0
' Default to the local computer.
mySourceData.MachineName = "."
End If
If mySourceData.LogName.Length = 0
' Default to the Application log.
mySourceData.LogName = "Application"
End If
' Determine if the source exists on the specified computer.
If Not EventLog.SourceExists(mySourceData.Source, _
mySourceData.MachineName)
' The source does not exist.
' Verify that the message file exists
' and the event log is local.
If mySourceData.MessageResourceFile <> Nothing AndAlso _
mySourceData.MessageResourceFile.Length > 0
If mySourceData.MachineName = "."
If Not System.IO.File.Exists(mySourceData.MessageResourceFile)
Console.WriteLine("File {0} not found - message file not set for source.", _
mySourceData.MessageResourceFile)
registerSource = False
End If
Else
' For simplicity, do not allow setting the message
' file for a remote event log. To set the message
' for a remote event log, and for source registration,
' the file path should be specified with system-wide
' environment variables that are valid on the remote
' computer, such as
' "%SystemRoot%\system32\myresource.dll".
Console.WriteLine("Message resource file ignored for remote event log.")
registerSource = False
End If
End If
Else
' Do not register the source, it already exists.
registerSource = False
' Get the event log corresponding to the existing source.
Dim sourceLog As string
sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source, _
mySourceData.MachineName)
' Determine if the event source is registered for the
' specified log.
If sourceLog.ToUpper(CultureInfo.InvariantCulture) <> mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)
' An existing source is registered
' to write to a different event log.
Console.WriteLine("Warning: source {0} is already registered to write to event log {1}", _
mySourceData.Source, sourceLog)
Else
' The source is already registered
' to write to the specified event log.
Console.WriteLine("Source {0} already registered to write to event log {1}", _
mySourceData.Source, sourceLog)
End If
End If
If registerSource
' Register the new event source for the specified event log.
Console.WriteLine("Registering new source {0} for event log {1}.", _
mySourceData.Source, mySourceData.LogName)
EventLog.CreateEventSource(mySourceData)
Console.WriteLine("Event source was registered successfully!")
End If
End Sub
End Class
End Namespace 'EventLogSamples
Poznámky
EventSourceCreationData Pomocí třídy nakonfigurujte nový zdroj pro zápis lokalizovaných položek do protokolu událostí. Ke čtení z protokolu událostí není nutné používat tuto třídu.
Tato třída definuje nastavení konfigurace pro nový zdroj událostí a jeho přidružený protokol událostí. Přidružený protokol událostí může být v místním nebo vzdáleném počítači. Chcete-li vytvořit nový zdroj pro nový nebo existující protokol událostí v místním počítači, nastavte LogName vlastnosti EventSourceCreationData a Source a zavolejte metoduEventLog.CreateEventSource(EventSourceCreationData). Tato metoda vytvoří zdroj událostí zadaný ve Source vlastnosti a zaregistruje ho pro protokol událostí zadaný v LogName. Toto chování se podobá použití EventLogInstaller třídy k registraci zdroje událostí pro protokol událostí.
K zápisu WriteEvent událostí do protokolu událostí použijte metody a WriteEntry . Je nutné zadat zdroj událostí pro zápis událostí; Před zápisem první položky do zdroje 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 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í EventLogInstallermetody nebo CreateEventSource . Abyste mohli vytvořit nový zdroj 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 se do něj nezapíše první položka.
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 potřebovat více zdrojů nakonfigurovaných pro různé protokoly událostí nebo různé soubory prostředků.
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, vytvořte nový zdroj s aktualizovanou konfigurací a neodstraňujte stávající zdroj.
Zdroj událostí můžete zaregistrovat s lokalizovanými prostředky 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ů, a nezadávat skutečný řetězec. Prohlížeč událostí použije 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 řetězcové hodnoty 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ů. Metoda WriteEntry zapisuje daný řetězec přímo do protokolu událostí; nepoužívá lokalizovatelný soubor prostředků zprávy. K zápisu WriteEvent událostí pomocí souboru lokalizovaného prostředku zprávy použijte metodu .
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 ho WriteEvent použijte v metodě 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 WriteEntry metodě k zápisu řetězců přímo do protokolu událostí pomocí daného zdroje.
Konstruktory
EventSourceCreationData(String, String) |
Inicializuje novou instanci EventSourceCreationData třídy se zadaným zdrojem událostí a názvem protokolu událostí. |
Vlastnosti
CategoryCount |
Získá nebo nastaví počet kategorií v souboru prostředků kategorie. |
CategoryResourceFile |
Získá nebo nastaví cestu k souboru prostředku, který obsahuje řetězce kategorií pro zdroj. |
LogName |
Získá nebo nastaví název protokolu událostí, do kterého zdroj zapisuje položky. |
MachineName |
Získá nebo nastaví název počítače, na kterém se má zaregistrovat zdroj událostí. |
MessageResourceFile |
Získá nebo nastaví cestu k souboru prostředků zprávy, který obsahuje řetězce formátování zprávy pro zdroj. |
ParameterResourceFile |
Získá nebo nastaví cestu k souboru prostředku, který obsahuje řetězce parametrů zprávy pro zdroj. |
Source |
Získá nebo nastaví název pro registraci v protokolu událostí jako zdroj události. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |