记一次生产bug【log4j使用】写入量过大,导致文件名生成出错

这是我印象最深刻的一次bug解决,可能因为当时实在太蠢了。。。
这是在刚参加工作不久的时候,领导让我做个系统统计日志,就是客户端那种打点日志,很简单,总共代码不超过一百行。。
当时我用的是log4j,设置的是按天生成日志,然后发现生成的日志文件有问题,并不是记录错了,而是生成的文件名, 本来是应该昨天的,却变成了前天的日期,文件的内容是没有问题。
然后我去网上搜这个问题,发现这个问题极其冷门,搜了半天才搜到几个遇到问题的人。然后领导是建议我用log4j2,我看了一下的确性能可能会提升十几倍,但是我觉得这不是方式,如果访问量再大可能又会出问题。
当时我是根据客户端传参去区分文件记录的,因为有很多不同的系统,如果是使用频繁的系统,一天的数据量有一个g,然后也就那个热门系统出现了这个问题,然后我就基本确定了是访问量导致的,再零点生成文件的时候,又有数据写入,导致文件名生成出错。
这个可能跟hashmap在扩容的时候又写入容易产生错误一样。
后来我去看了一下log4j的参数属性,看到了有设置缓存的选项,然后开起来之后发现可以了!!!!
应该就是一定程度上限制了写入量,8k为一个缓存区,我分析了一下,大概四五十次写入能合并成一次写入,然后就可以解决这个问题了,我在这也看到了log4j的瓶颈。。
用log4j2可能也能解决问题,但是在配置按传参区分文件名的设置我没找到,觉得太麻烦了,就决定log4j死磕到底。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值