Procedimiento para registrar información sobre servicios

Nota:

Este artículo no se aplica a servicios hospedados en .NET. Para el contenido más reciente sobre los servicios de Windows que utilizan Microsoft.Extensions.Hosting.BackgroundService y la plantilla del servicio de trabajo, consulte:

De forma predeterminada, todos los proyectos de servicio de Windows tienen la capacidad de interactuar con el registro de eventos de la aplicación y escriben información y excepciones en él. Utilice la propiedad AutoLog para indicar si quiere esta funcionalidad en la aplicación. De forma predeterminada, el registro está activado para cualquier servicio que se cree con la plantilla de proyecto de servicio de Windows. Puede utilizar una forma estática de la clase EventLog para escribir información de servicio en un registro sin tener que crear una instancia de un componente EventLog ni registrar manualmente un origen.

El instalador del servicio registra automáticamente cada uno de los servicios del proyecto como un origen de eventos válido con el registro de aplicaciones en el equipo donde está instalado el servicio, cuando el registro está activado. El servicio registra información cada vez que el servicio se inicia, se detiene, se pone en pausa, se reanuda, se instala o se desinstala. También registra los errores que se producen. No es necesario escribir nada de código para escribir entradas en el registro cuando se utiliza el comportamiento predeterminado; el servicio se encarga de ello automáticamente.

Si quiere escribir en un registro de eventos distinto del registro de aplicaciones, debe establecer la propiedad AutoLog en false, crear su propio registro de eventos personalizado dentro del código de servicios y registrar el servicio como un origen válido de entradas para este registro. Después, debe escribir código para registrar las entradas en el registro cada vez que se produzca una acción que le interese.

Nota

Si utiliza un registro de eventos personalizado y configura la aplicación de servicio para escribir en él, no debe intentar acceder al registro de eventos antes de establecer la propiedad ServiceName del servicio en el código. El registro de eventos necesita el valor de esta propiedad para registrar el servicio como un origen válido de eventos.

Para habilitar el registro de eventos predeterminado para el servicio

  • Establezca la propiedad AutoLog del componente a true.

    Nota

    De manera predeterminada, esta propiedad está establecida en true. No necesitará establecerla explícitamente a menos que esté creando procesamientos más complejos, tales como la evaluación de una condición y el posterior establecimiento de la propiedad AutoLog según el resultado de esa condición.

Para deshabilitar el registro de eventos para el servicio

  • Establezca la propiedad AutoLog del componente a false.

    AutoLog = false;
    
    Me.AutoLog = False
    

Para configurar el registro en un registro personalizado

  1. Establezca la propiedad AutoLog en false.

    Nota

    Debe establecer el valor de AutoLog en false para poder utilizar un registro personalizado.

  2. Configure una instancia de un componente EventLog en la aplicación de servicio de Windows.

  3. Cree un registro personalizado mediante una llamada al método CreateEventSource y especifique la cadena de origen y el nombre del archivo de registro que quiere crear.

  4. Establezca la propiedad Source de la instancia de componente EventLog en la cadena de origen que creó en el paso 3.

  5. Escriba las entradas mediante el acceso al método WriteEntry en la instancia de componente EventLog .

    El código siguiente muestra cómo configurar el registro en un registro personalizado.

    Nota

    En este ejemplo de código, una instancia de un componente EventLog se denomina eventLog1 (EventLog1 en Visual Basic). Si ha creado una instancia con otro nombre en el paso 2, cambie el código de forma acorde.

    public UserService2()
    {
        _eventLog1 = new EventLog();
        // Turn off autologging
    
        AutoLog = false;
        // create an event source, specifying the name of a log that
        // does not currently exist to create a new, custom log
        if (!EventLog.SourceExists("MySource"))
        {
            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
    

Vea también