Procedura: registrare informazioni sui serviziHow to: Log Information About Services

Per impostazione predefinita, tutti i progetti di servizio di Windows possono interagire con il log eventi dell'applicazione in cui possono scrivere informazioni ed eccezioni.By default, all Windows Service projects have the ability to interact with the Application event log and write information and exceptions to it. È possibile usare la proprietà AutoLog per indicare se si vuole fornire questa funzionalità nell'applicazione.You use the AutoLog property to indicate whether you want this functionality in your application. Per impostazione predefinita, la registrazione è attivata per tutti i servizi creati con il modello di progetto di servizio di Windows.By default, logging is turned on for any service you create with the Windows Service project template. È possibile usare un form statico della classe EventLog per scrivere le informazioni sul servizio in un log senza dover creare un'istanza di un componente EventLog o registrare manualmente un'origine.You can use a static form of the EventLog class to write service information to a log without having to create an instance of an EventLog component or manually register a source.

Il programma di installazione del servizio registra automaticamente ogni servizio nel progetto come origine valida degli eventi con il registro applicazioni sul computer in cui è installato il servizio, quando la registrazione è attivata.The installer for your service automatically registers each service in your project as a valid source of events with the Application log on the computer where the service is installed, when logging is turned on. Il servizio registra informazioni ogni volta che viene avviato, arrestato, sospeso, riavviato, installato o disinstallato,The service logs information each time the service is started, stopped, paused, resumed, installed, or uninstalled. oltre a registrare tutti gli errori che si verificano.It also logs any failures that occur. Non è necessario scrivere nessun codice per scrivere voci nel registro quando si usa il comportamento predefinito, perché è il servizio a farlo automaticamente.You do not need to write any code to write entries to the log when using the default behavior; the service handles this for you automatically.

Per scrivere in un registro eventi diverso dal registro applicazioni, è necessario impostare la proprietà AutoLog su false, creare il proprio registro eventi personalizzato nel codice dei servizi e registrare il servizio come origine valida delle voci di tale log.If you want to write to an event log other than the Application log, you must set the AutoLog property to false, create your own custom event log within your services code, and register your service as a valid source of entries for that log. È quindi necessario scrivere il codice per registrare le voci nel log quando si verifica un'azione a cui si è interessati.You must then write code to record entries to the log whenever an action you're interested in occurs.

Nota

Se si usa un registro eventi personalizzato e si configura l'applicazione di servizio perché vi possa scrivere, è necessario non tentare di accedere al registro eventi prima di impostare la proprietà ServiceName del servizio nel codice.If you use a custom event log and configure your service application to write to it, you must not attempt to access the event log before setting the service's ServiceName property in your code. Il registro eventi ha bisogno del valore di questa proprietà per registrare il servizio come origine valida degli eventi.The event log needs this property's value to register your service as a valid source of events.

Per abilitare la registrazione predefinita degli eventi per il servizioTo enable default event logging for your service

  • Impostare la proprietà AutoLog del componente su true.Set the AutoLog property for your component to true.

    Nota

    Per impostazione predefinita, questa proprietà è impostata su true.By default, this property is set to true. Non è necessario impostarla esplicitamente a meno che non si debba eseguire un'elaborazione più complessa, ad esempio la valutazione di una condizione seguita dall'impostazione della proprietà AutoLog in base al risultato di tale condizione.You do not need to set this explicitly unless you are building more complex processing, such as evaluating a condition and then setting the AutoLog property based on the result of that condition.

Per disabilitare la registrazione degli eventi per il servizioTo disable event logging for your service

  • Impostare la proprietà AutoLog del componente su false.Set the AutoLog property for your component to false.

    this.AutoLog = false;
    
    Me.AutoLog = False
    

Per configurare la registrazione in un log personalizzatoTo set up logging to a custom log

  1. Impostare la proprietà AutoLog su false.Set the AutoLog property to false.

    Nota

    È necessario impostare AutoLog su false per usare un log personalizzato.You must set AutoLog to false in order to use a custom log.

  2. Configurare un'istanza di un componente EventLog nell'applicazione di servizio di Windows.Set up an instance of an EventLog component in your Windows Service application.

  3. Creare un log personalizzato chiamando il metodo CreateEventSource e specificando la stringa di origine e il nome del file di log che si vuole creare.Create a custom log by calling the CreateEventSource method and specifying the source string and the name of the log file you want to create.

  4. Impostare la proprietà Source sull'istanza del componente EventLog per la stringa di origine creata nel passaggio 3.Set the Source property on the EventLog component instance to the source string you created in step 3.

  5. Scrivere le voci accedendo al metodo WriteEntry nell'istanza del componente EventLog .Write your entries by accessing the WriteEntry method on the EventLog component instance.

    Il codice seguente illustra come configurare la registrazione in un log personalizzato.The following code shows how to set up logging to a custom log.

    Nota

    In questo esempio di codice un'istanza di un componente EventLog è denominata eventLog1 (EventLog1 in Visual Basic).In this code example, an instance of an EventLog component is named eventLog1 (EventLog1 in Visual Basic). Se si è creata un'istanza con un altro nome nel passaggio 2, modificare il codice di conseguenza.If you created an instance with another name in step 2, change the code accordingly.

    public UserService2()
    {
                   eventLog1 = new System.Diagnostics.EventLog();
    	// Turn off autologging
    	this.AutoLog = false;
    	// create an event source, specifying the name of a log that
    	// does not currently exist to create a new, custom log
    	if (!System.Diagnostics.EventLog.SourceExists("MySource")) 
    	{        
    			System.Diagnostics.EventLog.CreateEventSource(
    				"MySource","MyLog");
    	}
    	// configure the event log instance to use this source name
    	eventLog1.Source = "MySource";
                   eventLog1.Log = "MyLog";
    }
    
    Public Sub New()
      ' Turn off autologging
      Me.AutoLog = False
      ' Create a new event source and specify a log name that
      ' does not exist to create a custom log
      If Not System.Diagnostics.EventLog.SourceExists("MySource") Then
          System.Diagnostics.EventLog.CreateEventSource("MySource",
          "MyLog")
      End If
      ' Configure the event log instance to use this source name
      EventLog1.Source = "MySource"
    End Sub
    
    
    protected override void OnStart(string[] args)
    {
    	// write an entry to the log
    	eventLog1.WriteEntry("In OnStart.");
    }
    
    
    Protected Overrides Sub OnStart(ByVal args() As String)
      ' Write an entry to the log you've created.
      EventLog1.WriteEntry("In Onstart.")
    End Sub
    

Vedere ancheSee Also

Introduzione alle applicazioni di servizio WindowsIntroduction to Windows Service Applications