EventSourceCreationData Klas

Definitie

Vertegenwoordigt de configuratie-instellingen die worden gebruikt voor het maken van een gebeurtenislogboekbron op de lokale computer of een externe computer.

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Overname
EventSourceCreationData

Voorbeelden

In het volgende codevoorbeeld worden de configuratie-eigenschappen voor een gebeurtenisbron ingesteld op basis van opdrachtregelargumenten. De invoerargumenten geven de naam van de gebeurtenisbron, de naam van het gebeurtenislogboek, de computernaam en het resourcebestand van het gebeurtenisbericht op. Het codevoorbeeld controleert of de bron geen conflict veroorzaakt met een bestaande gebeurtenisbron en maakt vervolgens de nieuwe gebeurtenisbron voor het opgegeven gebeurtenislogboek.

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

Opmerkingen

Gebruik de EventSourceCreationData klasse om een nieuwe bron te configureren voor het schrijven van gelokaliseerde vermeldingen in een gebeurtenislogboek. Het is niet nodig om deze klasse te gebruiken om te lezen uit een gebeurtenislogboek.

Deze klasse definieert de configuratie-instellingen voor een nieuwe gebeurtenisbron en het bijbehorende gebeurtenislogboek. Het bijbehorende gebeurtenislogboek kan zich op de lokale computer of een externe computer bevinden. Als u een nieuwe bron wilt maken voor een nieuw of bestaand gebeurtenislogboek op de lokale computer, stelt u de LogName en eigenschappen van een EventSourceCreationData en Source roept u de EventLog.CreateEventSource(EventSourceCreationData) methode aan. Met deze methode maakt u de gebeurtenisbron die u opgeeft in de Source eigenschap en registreert deze voor het gebeurtenislogboek dat is opgegeven in LogName. Dit gedrag is vergelijkbaar met het gebruik van de klasse voor het EventLogInstaller registreren van een gebeurtenisbron voor een gebeurtenislogboek.

Gebruik de WriteEvent en WriteEntry methoden om gebeurtenissen naar een gebeurtenislogboek te schrijven. U moet een gebeurtenisbron opgeven om gebeurtenissen te schrijven; u moet de gebeurtenisbron maken en configureren voordat u de eerste vermelding met de bron schrijft.

Maak de nieuwe gebeurtenisbron tijdens de installatie van uw toepassing. Hierdoor kan het besturingssysteem de lijst met geregistreerde gebeurtenisbronnen en hun configuraties vernieuwen. Als het besturingssysteem de lijst met gebeurtenisbronnen niet heeft vernieuwd en u probeert een gebeurtenis te schrijven met de nieuwe bron, mislukt de schrijfbewerking. U kunt een nieuwe bron configureren met behulp van een EventLogInstallerof met behulp van de CreateEventSource methode. U moet beheerdersrechten hebben op de computer om een nieuwe gebeurtenisbron te maken.

U kunt een gebeurtenisbron maken voor een bestaand gebeurtenislogboek of een nieuw gebeurtenislogboek. Wanneer u een nieuwe bron voor een nieuw gebeurtenislogboek maakt, registreert het systeem de bron voor dat logboek, maar wordt het logboek pas gemaakt nadat de eerste vermelding ernaar is geschreven.

Elke bron kan slechts naar één gebeurtenislogboek tegelijk schrijven; Uw toepassing kan echter meerdere bronnen gebruiken om naar meerdere gebeurtenislogboeken te schrijven. Uw toepassing kan bijvoorbeeld meerdere bronnen nodig hebben die zijn geconfigureerd voor verschillende gebeurtenislogboeken of verschillende resourcebestanden.

Als u de configuratiedetails van een bestaande bron wilt wijzigen, moet u de bron verwijderen en deze vervolgens maken met de nieuwe configuratie. Als andere toepassingen of onderdelen de bestaande bron gebruiken, maakt u een nieuwe bron met de bijgewerkte configuratie in plaats van de bestaande bron te verwijderen.

U kunt de gebeurtenisbron registreren bij gelokaliseerde resources voor uw gebeurteniscategorie en berichtreeksen. Uw toepassing kan vermeldingen in het gebeurtenislogboek schrijven met behulp van resource-id's, in plaats van de werkelijke tekenreeks op te geven. De Logboeken gebruikt de resource-id om de bijbehorende tekenreeks uit het gelokaliseerde resourcebestand te zoeken en weer te geven op basis van de huidige taalinstellingen. U kunt een afzonderlijk bestand registreren voor gebeurteniscategorieën, berichten en parameterinvoegreeksen, of u kunt hetzelfde resourcebestand registreren voor alle drie de typen tekenreeksen. Gebruik de CategoryCounteigenschappen , CategoryResourceFileen MessageResourceFileParameterResourceFile eigenschappen om de bron te configureren voor het schrijven van gelokaliseerde vermeldingen in het gebeurtenislogboek. Als uw toepassing tekenreekswaarden rechtstreeks naar het gebeurtenislogboek schrijft, hoeft u deze eigenschappen niet in te stellen.

De bron moet worden geconfigureerd voor het schrijven van gelokaliseerde vermeldingen of voor het schrijven van directe tekenreeksen. De WriteEntry methode schrijft de opgegeven tekenreeks rechtstreeks naar het gebeurtenislogboek. Er wordt geen lokaal berichtbronbestand gebruikt. Gebruik de WriteEvent methode om gebeurtenissen te schrijven met behulp van een gelokaliseerd berichtbronbestand.

Als uw toepassing vermeldingen schrijft met zowel resource-id's als tekenreekswaarden, moet u twee afzonderlijke bronnen registreren. Configureer bijvoorbeeld één bron met resourcebestanden en gebruik die bron in de WriteEvent methode om vermeldingen te schrijven met behulp van resource-id's naar het gebeurtenislogboek. Maak vervolgens een andere bron zonder resourcebestanden en gebruik die bron in de WriteEntry methode om tekenreeksen rechtstreeks naar het gebeurtenislogboek te schrijven met behulp van die bron.

Constructors

Name Description
EventSourceCreationData(String, String)

Initialiseert een nieuw exemplaar van de EventSourceCreationData klasse met een opgegeven gebeurtenisbron en naam van gebeurtenislogboek.

Eigenschappen

Name Description
CategoryCount

Hiermee wordt het aantal categorieën in het resourcebestand van de categorie ophaalt of ingesteld.

CategoryResourceFile

Hiermee haalt u het pad op van het resourcebestand dat categorietekenreeksen voor de bron bevat.

LogName

Hiermee haalt u de naam op van het gebeurtenislogboek waarnaar de bron vermeldingen schrijft.

MachineName

Hiermee haalt u de naam op van de computer waarop de gebeurtenisbron moet worden geregistreerd.

MessageResourceFile

Hiermee haalt u het pad op van het berichtbronbestand dat tekenreeksen voor berichtopmaak voor de bron bevat of stelt u dit in.

ParameterResourceFile

Hiermee haalt u het pad op van het resourcebestand dat berichtparametertekenreeksen voor de bron bevat of stelt u dit in.

Source

Hiermee haalt u de naam op die moet worden geregistreerd bij het gebeurtenislogboek als gebeurtenisbron.

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook