Compartir a través de


Formato de archivo de registro de eventos

Cada registro de eventos contiene un encabezado (representado por la estructura ELF_LOGFILE_HEADER ) que tiene un tamaño fijo, seguido de un número variable de registros de eventos (representados por estructuras EVENTLOGRECORD ) y un registro de fin de archivo (representado por la estructura ELF_EOF_RECORD ).

La estructura de ELF_LOGFILE_HEADER y la estructura de ELF_EOF_RECORD se escriben en el registro de eventos cuando se crea el registro de eventos y se actualizan cada vez que se escribe un evento en el registro.

Cuando una aplicación llama a la función ReportEvent para escribir una entrada en el registro de eventos, el sistema pasa los parámetros al servicio de registro de eventos. El servicio de registro de eventos usa la información para escribir una estructura EVENTLOGRECORD en el registro de eventos. En el siguiente diagrama se muestra este proceso.

escribir un archivo de registro

Los registros de eventos se organizan de una de las siguientes maneras:

  • Sin ajuste. El registro más antiguo es inmediatamente después del encabezado del registro de eventos y se agregan nuevos registros después del último registro que se agregó (antes del ELF_EOF_RECORD). En el ejemplo siguiente se muestra el método de no ajuste:

    HEADER                   (ELF_LOGFILE_HEADER)
    EVENT RECORD 1           (EVENTLOGRECORD)
    EVENT RECORD 2           (EVENTLOGRECORD)
    EOF RECORD               (ELF_EOF_RECORD)
    

    El ajuste no se puede producir cuando se crea el registro de eventos o cuando se borra el registro de eventos. El registro de eventos sigue sin encapsularse hasta que se alcance el límite de tamaño del registro de eventos. El tamaño del registro de eventos está limitado por el valor de configuración MaxSize o la cantidad de recursos del sistema.

    Cuando se alcanza el límite de tamaño del registro de eventos, puede empezar a encapsular. El ajuste se controla mediante el valor de configuración de retención . Para obtener más información sobre los valores de configuración del registro de eventos, vea Clave de registro de eventos.

  • Envoltura. Los registros se organizan como un búfer circular. A medida que se agregan nuevos registros, se reemplazan los registros más antiguos. La ubicación de los registros más antiguos y más recientes variará. En el ejemplo siguiente se muestra el método de ajuste.

    HEADER                   (ELF_LOGFILE_HEADER)
    Part of EVENT RECORD 300 (EVENTLOGRECORD)
    EVENT RECORD 301         (EVENTLOGRECORD)
    .
    .
    .
    EVENT RECORD 400         (EVENTLOGRECORD)
    EOF RECORD               (ELF_EOF_RECORD)
    Wasted space
    EVENT RECORD 102         (EVENTLOGRECORD)
    EVENT RECORD 103         (EVENTLOGRECORD)
    .
    .
    .
    EVENT RECORD 299         (EVENTLOGRECORD)
    Part of EVENT RECORD 300 (EVENTLOGRECORD)
    

    En el ejemplo, el registro más antiguo ya no es 1, pero es 102 porque se sobrescribió el espacio para los registros 1 a 101.

    Hay algún espacio entre el ELF_EOF_RECORD y el registro más antiguo porque el sistema borrará un número entero de registros para liberar espacio para el registro más reciente. Por ejemplo, si el registro más reciente es de 100 bytes y los dos registros más antiguos tienen 75 bytes de longitud, el sistema quitará los dos registros más antiguos. Los 50 bytes adicionales se usarán más adelante cuando se escriban nuevos registros.

    Un archivo de registro de eventos tiene un tamaño fijo y, cuando los registros del ajuste del archivo, el registro al final del archivo normalmente se dividirá en dos registros. Por ejemplo, si la posición de la escritura siguiente es de 100 bytes desde el final del archivo y el tamaño del registro es de 300 bytes, los primeros 100 bytes se escribirán al final del archivo y los próximos 200 bytes se escribirán al principio del archivo inmediatamente después del ELF_LOGFILE_HEADER. Si el espacio disponible al final del archivo es menor que la parte fija del EVENTLOGRECORD (0x38 bytes), todo el nuevo registro se escribirá al principio del archivo inmediatamente después del ELF_LOGFILE_HEADER. Los bytes sin usar al final del archivo se rellenarán con el patrón 0x00000027.

Para obtener más información y un ejemplo de código, vea Creación de informes de un evento.