日志问题

 前些日子,凌晨被叫回项目,因为项目在更新程序后,在日志输出时老是重复很多条相同的输出,导致日志文件很快的满了。首先怀疑是log4j的配置有问题,在生产环境上拿到的配置文件上来看,并没有问题,即使是配置有问题导的的重复也只有有条重复而已,不会有上百条,几百条重复。从拿下来的日志文件上看,有很多是关于操作EXCEPTION_LOG表时出错,于是从数据库操作类上查找原因,怀疑可能是在交易里操作数据出错,于是记录时,操作了EXCEPTION_LOG表时又出错,于嵌套循环出错,这可以解释为什么日志里有这么多的操作EXCEPTION_LOG表出错的原因,但再仔细看程序,对操作EXCEPTION_LOG表出错是有判断的,不会出现嵌套循环出错,而且这个程序已应用多年,这次上线并没有更新。最后,从输出的日志上来,结合配置,发现输出的内容并没有配置,所以怀疑配置被动态修改了,于是从上线的程序上查找,发现在一个交易里,有开发人员直接使用log4j的API来输出日志,有对应的交易类里有这样的代码:
{
BasicConfigurator.configure();
}
每次调用该交易时,实是实例化交易类,这就导致每次都会进行一次log4j的默认的输出配置,增加一个新的layout,这就导致有多个输出配置,每次有log4j的输出时,都会根据输出 配置进行输出,这也就找到了几百条重复输出的原因的了,如果交易再被多调用几次,重复数还会更多
在log4j的BasicConfigurator.configure()源码里是这新的:
static
  public
  void configure() {
   
Logger root = Logger.getRootLogger();
   
root.addAppender(new ConsoleAppender(
 new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));
 
}
问题虽然解决了,但是一个项目里对底层框架,公共类还是由专人或是一个小组去管理维护,不要在开发的业务交易里由开发人员去涉及,要形成良好的开发规范,除了加强监管外,开发人员自身也要有这样的意识。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值