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"