EventSourceCreationData Klass

Definition

Representerar de konfigurationsinställningar som används för att skapa en händelseloggkälla på den lokala datorn eller en fjärrdator.

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

Exempel

I följande kodexempel anges konfigurationsegenskaperna för en händelsekälla från kommandoradsargument. Indataargumenten anger händelsekällans namn, händelseloggnamn, datornamn och resursfil för händelsemeddelande. Kodexemplet verifierar att källan inte står i konflikt med en befintlig händelsekälla och skapar sedan den nya händelsekällan för den angivna händelseloggen.

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

Kommentarer

EventSourceCreationData Använd klassen för att konfigurera en ny källa för att skriva lokaliserade poster till en händelselogg. Du behöver inte använda den här klassen för att läsa från en händelselogg.

Den här klassen definierar konfigurationsinställningarna för en ny händelsekälla och dess associerade händelselogg. Den associerade händelseloggen kan finnas på den lokala datorn eller på en fjärrdator. Om du vill skapa en ny källa för en ny eller befintlig händelselogg på den lokala datorn anger du LogName egenskaperna och Source för en EventSourceCreationData och anropar EventLog.CreateEventSource(EventSourceCreationData) metoden. Den här metoden skapar den händelsekälla som du anger i Source egenskapen och registrerar den för händelseloggen som anges i LogName. Det här beteendet liknar att använda EventLogInstaller klassen för att registrera en händelsekälla för en händelselogg.

WriteEvent Använd metoderna och WriteEntry för att skriva händelser till en händelselogg. Du måste ange en händelsekälla för att skriva händelser. du måste skapa och konfigurera händelsekällan innan du skriver den första posten med källan.

Skapa den nya händelsekällan under installationen av programmet. Detta gör det möjligt för operativsystemet att uppdatera sin lista över registrerade händelsekällor och deras konfigurationer. Om operativsystemet inte har uppdaterat sin lista över händelsekällor och du försöker skriva en händelse med den nya källan misslyckas skrivåtgärden. Du kan konfigurera en ny källa med hjälp av en EventLogInstaller, eller med hjälp av CreateEventSource metoden . Du måste ha administratörsbehörighet på datorn för att kunna skapa en ny händelsekälla.

Du kan skapa en händelsekälla för en befintlig händelselogg eller en ny händelselogg. När du skapar en ny källa för en ny händelselogg registrerar systemet källan för loggen, men loggen skapas inte förrän den första posten har skrivits till den.

Varje källa kan bara skriva till en händelselogg i taget. Ditt program kan dock använda flera källor för att skriva till flera händelseloggar. Ditt program kan till exempel behöva flera källor som konfigurerats för olika händelseloggar eller olika resursfiler.

Om du vill ändra konfigurationsinformationen för en befintlig källa måste du ta bort källan och sedan skapa den med den nya konfigurationen. Om andra program eller komponenter använder den befintliga källan skapar du en ny källa med den uppdaterade konfigurationen i stället för att ta bort den befintliga källan.

Du kan registrera händelsekällan med lokaliserade resurser för din händelsekategori och meddelandesträngar. Programmet kan skriva händelseloggposter med hjälp av resursidentifierare i stället för att ange den faktiska strängen. Zobrazovač udalostí använder resursidentifieraren för att hitta och visa motsvarande sträng från den lokaliserade resursfilen baserat på aktuella språkinställningar. Du kan registrera en separat fil för händelsekategorier, meddelanden och parameterinfogningssträngar, eller så kan du registrera samma resursfil för alla tre typerna av strängar. CategoryCountAnvänd egenskaperna , CategoryResourceFile, MessageResourceFileoch ParameterResourceFile för att konfigurera källan för att skriva lokaliserade poster till händelseloggen. Om ditt program skriver strängvärden direkt till händelseloggen behöver du inte ange dessa egenskaper.

Källan måste konfigureras antingen för att skriva lokaliserade poster eller för att skriva direktsträngar. Metoden skriver den angivna strängen direkt till händelseloggen. Den WriteEntry använder inte en lokal meddelanderesursfil. WriteEvent Använd metoden för att skriva händelser med hjälp av en lokaliserad meddelanderesursfil.

Om programmet skriver poster med både resursidentifierare och strängvärden måste du registrera två separata källor. Du kan till exempel konfigurera en källa med resursfiler och sedan använda källan WriteEvent i metoden för att skriva poster med hjälp av resursidentifierare till händelseloggen. Skapa sedan en annan källa utan resursfiler och använd den WriteEntry källan i metoden för att skriva strängar direkt till händelseloggen med den källan.

Konstruktorer

Name Description
EventSourceCreationData(String, String)

Initierar en ny instans av EventSourceCreationData klassen med en angiven händelsekälla och händelseloggnamn.

Egenskaper

Name Description
CategoryCount

Hämtar eller anger antalet kategorier i kategoriresursfilen.

CategoryResourceFile

Hämtar eller anger sökvägen till resursfilen som innehåller kategoristrängar för källan.

LogName

Hämtar eller anger namnet på händelseloggen som källan skriver poster till.

MachineName

Hämtar eller anger namnet på den dator där händelsekällan ska registreras.

MessageResourceFile

Hämtar eller anger sökvägen till den meddelanderesursfil som innehåller meddelandeformateringssträngar för källan.

ParameterResourceFile

Hämtar eller anger sökvägen till resursfilen som innehåller meddelandeparametersträngar för källan.

Source

Hämtar eller anger namnet som ska registreras med händelseloggen som händelsekälla.

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för

Se även