NLog自动删除日志,设置保留一周内日志

NLog自动删除日志

          .Net6(.Net Core 6)的项目使用NLog记录日志,在一次测试服务器,服务构建后无法启动,经过查找原因发现是NLog记录日志占用磁盘240G导致磁盘空间不够,于是

 经过查找发现NLog.config的一个路由规则导致的如下:

问题一

<logger name="*" minlevel="Info" writeTo="logfile" />

 这个规则导致所有Info信息类型的消息,全部都会被写入日志文件中,包括EFCore自带的生成的sql语句日志,都会被写入日志文件中如图:

 

解决办法:

修改后的代码

<logger name="Microsoft.*" minlevel="Info" final="true" />

final: 最终规则匹配后不处理任何规则

命名空间Microsoft下所有类的、最小级别在Info的日志信息都不会被记录,由于此路由没有writeTo属性,同时其它后续规则也都会被忽略(因为这里设置了final="true"),自己记录的日志会被记录如:

_logger.LogInformation("我的Info日志");

问题二

解决了问题一,还不够。虽然系统日志不会被记录,只记录自定义日志,但是记录的日志随着时间增加,日志文件所占磁盘空间仍然会不断变大,

所以主题来了"NLog自动删除日志"

配置如下:

 

警告: fileName="${basedir}/Nlogs/${level}s/${shortdate}${level}.log" 下生效,其它路径需要自行测试

简要说明两个参数: maxArchiveDays:7 保留七天内的日志、maxArchiveFiles=10 保留文档最大数量为10。保留最近七天的十个日志文件,其他日志文件自动删除。

另外还有一个参数: archiveAboveSize: 日志文件将自动存档的大小(以字节为单位), archiveAboveSize(存档大小)没有达到,不会删除旧日志文件

若想及时生效设置  archiveEvery="Minute" 每分钟存档一次

GitHub上NLog参考文档 :   https://github.com/NLog/NLog/wiki/File-target

  解决办法:

 修改后加入代码


 maxArchiveDays="7"
 maxArchiveFiles="10"
 

 

posted @ 2022-02-16 13:51  Misterj  阅读(6346)  评论(9)    收藏  举报