Esporta (0) Stampa
Espandi tutto

Classe EventSourceCreationData

Nota: questa classe è stata introdotta con .NET Framework versione 2.0.

Rappresenta le impostazioni di configurazione utilizzate per creare un'origine del log eventi sul computer locale o su un computer remoto.

Spazio dei nomi: System.Diagnostics
Assembly: System (in system.dll)

public class EventSourceCreationData
public class EventSourceCreationData
public class EventSourceCreationData

Utilizzare la classe EventSourceCreationData per configurare una nuova origine per scrivere voci localizzate in un log eventi. Non è necessario utilizzare questa classe per leggere da un log eventi.

Questa classe definisce le impostazioni di configurazione per una nuova origine eventi e il log eventi associato. Il log eventi associato può trovarsi sul computer locale o su un computer remoto. Per creare una nuova origine per un log eventi nuovo o esistente sul computer locale, impostare le proprietà LogName e Source di un oggetto EventSourceCreationData e chiamare il metodo EventLog.CreateEventSource(EventSourceCreationData). Questo metodo consente di creare l'origine eventi specificata nella proprietà Source e di registrarla per il log eventi specificato in LogName. Questo comportamento è analogo all'utilizzo della classe EventLogInstaller per registrare un'origine eventi per un log eventi.

Utilizzare i metodi WriteEvent e WriteEntry per scrivere eventi in un log eventi. È necessario specificare un'origine eventi per scrivere eventi; è necessario creare e configurare l'origine eventi prima di scrivere la prima voce con l'origine.

Creare la nuova origine eventi durante l'installazione dell'applicazione. In questo modo vi sarà il tempo per aggiornare l'elenco delle origini eventi e delle relative configurazioni registrate nel sistema operativo. Se l'elenco delle origini eventi non è stato aggiornato e si cerca di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine tramite un oggetto EventLogInstaller oppure tramite il metodo CreateEventSource. È necessario disporre di diritti amministrativi sul computer per creare una nuova origine eventi.

È possibile creare un'origine eventi per un log eventi esistente o nuovo. Quando si crea una nuova origine per un nuovo log eventi, viene registrata l'origine per tale log, ma il log non viene creato finché non viene scritta la prima voce.

Ogni origine consente la scrittura in un solo log eventi alla volta; tuttavia l'applicazione può utilizzare più origini per scrivere in più log eventi. L'applicazione può ad esempio richiedere la configurazione di più origini per diversi log eventi o per diversi file di risorse.

Per modificare i dettagli di configurazione di un'origine esistente, è necessario eliminare l'origine e crearla con la nuova configurazione. Se l'origine esistente è in uso da parte di altre applicazioni o componenti, creare una nuova origine con la configurazione aggiornata anziché eliminare quella esistente.

È possibile registrare l'origine eventi con risorse localizzate per la categoria evento e le stringhe di messaggio. L'applicazione può scrivere voci del log eventi mediante identificatori di risorsa, anziché specificare la stringa effettiva. Il Visualizzatore eventi utilizza l'identificatore di risorsa per trovare e visualizzare la stringa corrispondente dal file di risorse localizzato in base alle impostazioni della lingua correnti. È possibile registrare un file distinto, rispettivamente, per le categorie di eventi, per i messaggi e per le stringhe di inserimento parametri oppure è possibile registrare lo stesso file di risorse per tutti e tre i tipi di stringhe. Utilizzare le proprietà CategoryCount, CategoryResourceFile, MessageResourceFile e ParameterResourceFile per configurare l'origine per scrivere voci localizzate nel log eventi. Se l'applicazione scrive valori di stringhe direttamente nel log eventi, non è necessario impostare queste proprietà.

L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette. Il metodo WriteEntry consente la scrittura di una determinata stringa direttamente nel log eventi senza utilizzare un file di risorse dei messaggi localizzabile. Utilizzare il metodo WriteEvent per scrivere eventi utilizzando un file di risorse dei messaggi localizzato.

Se l'applicazione scrive voci tramite identificatori di risorsa e valori di stringa, è necessario registrare due origini separate. Configurare ad esempio un'origine con file di risorse e utilizzarla nel metodo WriteEvent per scrivere voci tramite identificatori di risorsa nel log eventi. Creare un'origine diversa senza file di risorse e utilizzarla nel metodo WriteEntry per scrivere stringhe direttamente nel log eventi.

Nota sulla piattaforma Windows 98: I log eventi non sono supportati in Windows 98 e Windows Millennium Edition (ME).

Nell'esempio di codice riportato di seguito vengono impostate le proprietà di configurazione per un'origine eventi tramite gli argomenti della riga di comando. Gli argomenti immessi specificano il nome dell'origine eventi, il nome del log eventi, il nome del computer e il file di risorse del messaggio di evento. Nell'esempio di codice viene verificato che l'origine non sia in conflitto con un'origine eventi esistente, quindi viene creata una nuova origine eventi per il log eventi specificato.

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!");
            }
        }
    }
}

System.Object
  System.Diagnostics.EventSourceCreationData

I membri statici pubblici (Shared in Visual Basic) di questo tipo sono validi per le operazioni multithreading. I membri di istanza non sono garantiti come thread safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.

.NET Framework

Supportato in: 2.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft