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.