log4net 应用重启日志被覆盖

一、环境

C# .net core 3.1; Linux 容器形式部署;

日志目录有挂载出来,忽略此原因;

二、背景

log4net配置如下,当容器重新创建(发布时),日志会被覆盖

 

三、问题复现

1、测试环境先产生3个info日志文件

2、重启容器

3、发现日志又以索引0开始写日志,这样原来的日志文件就依次被覆盖

4、本地启动应用也是一样,重启应用从索引0开始写日志

四、分析和排查

1、查看log4net源码,发现初始化索引是获取file配置指定目录下的日志文件截取索引。

 

 2、file配置目录App_Data/Logs/,而我们的配置在datePattern又加了一层日期的目录(每天一个文件夹,因为日志有点多),所以在file的目录是获取不到已有的日志文件,解析不出最大的索引

<datePattern value="yyyyMMdd/'info-'yyyyMMdd'.log'" />

3、按照源码,我们将日期的目录加在file后面,照理就可以的

4、按照想象配置了一波

<file type="log4net.Util.PatternString" value="App_Data/Logs/%utcdate{yyyyMMdd}/" />

<datePattern value="'info-'yyyyMMdd'.log'" />

5、验证OK,不会重新覆盖了

后记

按照上面的处理,发现不会每天自动创建一个日期的文件夹。

还是改写RollingFileAppender解决;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值