NLog自动删除日志

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

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

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

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

解决办法:

修改后的代码

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

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

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

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

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

配置如下:

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

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

解决办法:

修改后加入代码

 maxArchiveDays="7"
 maxArchiveFiles="10"