Compartir a través de


Cómo: Registrar información sobre servicios

Actualización: noviembre 2007

De forma predeterminada, todos los proyectos de servicios de Windows tienen la capacidad de interactuar con el registro de eventos de aplicación y escribir en él información y excepciones. Utilice la propiedad AutoLog para indicar que desea esta funcionalidad en la aplicación. De forma predeterminada, el registro está activado para cualquier servicio que se cree con la plantilla de proyecto 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 servicio del proyecto como un origen de eventos válido con el registro de aplicación del equipo en el que se instala el servicio, siempre que el registro esté activado. El servicio registra información cada vez que el servicio se inicia, se detiene, se pausa, se reanuda, se instala o se desinstala. También registra cualquier error que se produzca. No es necesario escribir código para escribir entradas en el registro cuando se utiliza el comportamiento predeterminado, ya que el servicio se encargará de ello automáticamente.

Si desea escribir en un registro de eventos distinto del registro de aplicación, deberá establecer la propiedad AutoLog en false, crear su propio registro de eventos personalizado dentro del código de servicios y registrar el servicio como origen válido de entradas para este registro. Para obtener más información, vea Cómo: Crear y quitar registros de eventos personalizados. Deberá escribir código para registrar las entradas en el registro siempre que se produzca una acción de interés.

Nota:

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

Para habilitar el registro de eventos predeterminado para el servicio

  • Establezca la propiedad AutoLog de su componente en true.

    Nota:

    De forma predeterminada, esta propiedad está establecida en true. No necesitará establecerla explícitamente a menos que esté generando procesos más complejos, tales como evaluar una condición y, a continuación, establecer la propiedad AutoLog según el resultado de esa condición.

Para deshabilitar el registro de eventos para el servicio

  • Establezca la propiedad AutoLog de su componente en false.

    Me.AutoLog = False
    
         this.AutoLog = false;
    
            this.set_AutoLog(false);
    

Para configurar el registro en un registro personalizado

  1. Establezca la propiedad AutoLog en false.

    Nota:

    Debe establecer AutoLog en False para poder utilizar un registro personalizado.

  2. Configure una instancia de un componente EventLog en la aplicación de servicios de Windows. Para obtener más información, vea Cómo: Crear instancias de componentes EventLog.

  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 desea crear.

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

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

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

    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 Overrides Sub OnStart(ByVal args() As String)
      ' Write an entry to the log you've created.
      EventLog1.WriteEntry("In Onstart.")
    End Sub
    
     public UserService2()
        {
            // 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";
        }
    
    
    ...
    
    
    
        protected override void OnStart(string[] args)
        {
            // write an entry to the log
            eventLog1.WriteEntry("In OnStart.");
        }
    
        public UserService2()
        {
            // Turn off autologging
            this.set_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.set_Source("MySource");
        }
    
    
    ...
    
    
    
        protected void OnStart(System.String[] args)
        {
            // write an entry to the log
            eventLog1.WriteEntry("In OnStart.");
        }
    

Vea también

Tareas

Cómo: Crear y quitar registros de eventos personalizados

Cómo: Crear instancias de componentes EventLog

Conceptos

Introducción a las aplicaciones de servicios de Windows