Saltar al contenido

NLog: eliminar registros de más de X días

Solución:

ahora mismo está creando registros en directorios que contienen la fecha. Para permitir que NLog administre automáticamente sus archivos de registro actuales y antiguos, debe utilizar la función de archivo NLog. Como se documenta en la documentación de destino del archivo NLog, aquí puede usar los atributos archiveFileName y maxArchiveFiles junto con un registro diario para mantener los archivos de registro durante X días antes de que NLog los elimine.

Probablemente tenga que mantener todos los registros archivados en un solo directorio; de lo contrario, NLog no podrá ubicar los registros más antiguos y eliminarlos. Crearía un directorio de archivo como subdirectorio de su directorio de registro principal, haría que NLog pusiera todos los registros de archivo allí y luego solo usaría el maxArchiveFiles parámetro para decirle a NLog cuántos de esos registros desea conservar.

<targets>
<target name="asyncFile" xsi:type="AsyncWrapper">
  <target
    name="fatalLog"
    xsi:type="File"
    layout="${longdate}|${callsite}|${message}|${exception}"
    fileName="${LogHome}/Fatal.txt"
    archiveFileName="${LogHome}/Archive/Fatal-${shortdate}.txt"
    maxArchiveFiles="5"
    archiveEvery="Day"
          />
</target>
<target name="asyncFile" xsi:type="AsyncWrapper">
  <target
    name="errorLog"
    xsi:type="File"
    layout="${longdate}|${callsite}|${message}|${exception}"
    fileName="${LogHome}/Error.txt"
    archiveFileName="${LogHome}/Archive/Error-${shortdate}.txt"
    maxArchiveFiles="5"
    archiveEvery="Day"
          />
</target>
</targets>

eso debería darle dos archivos de registro con el registro actual y un directorio de archivo con 5 registros para cada objetivo de los últimos 5 días.

NLog 4.5 facilita la configuración de la limpieza del archivo:

  <target
    name="errorLog"
    xsi:type="File"
    layout="${longdate}|${callsite}|${message}|${exception}"
    fileName="${DailyDir}/Error.${shortdate}.txt"
    maxArchiveFiles="5"
  />

NLog 4.7 también presenta la configuración maxArchiveDays (Útil si también usa archiveAboveSize). Véase también: https://github.com/NLog/NLog/wiki/File-target#archive-old-log-files

<target name="Logs" xsi:type="File" fileName="${basedir}/Logs/${shortdate}/${shortdate}-${level}.csv" archiveAboveSize="10240" keepFileOpen="false" 
        maxArchiveDays="30" maxArchiveFiles="90">
  <layout xsi:type="CSVLayout">
    <column name="time" layout="${longdate}" />
    <column name="logger" layout="${logger}"/>
    <column name="message" layout="${message}" />
  </layout>
</target>

Usé el código anterior en mis objetivos para superar este problema. Creará un nuevo archivo si el archivo aumenta 10 MB y se almacena como CSV, por lo que es fácil de leer en Excel y eliminar archivos con 30 días de antigüedad.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *