今天系统升级,是web程序,备份程序之后,替换class下面的com的全部类文件后shutdown   tomcat,然后启动程序,startup之后出现

java.lang.NullPointerException
at org.apache.log4j.spi.LocationInfo.<init>(LocationInfo.java:104)
at org.apache.log4j.spi.LoggingEvent.getLocationInformation(LoggingEvent.java:191)
at org.apache.log4j.helpers.PatternParser$LocationPatternConverter.convert(PatternParser.java:483)
at org.apache.log4j.helpers.PatternConverter.format(PatternConverter.java:64)
at org.apache.log4j.PatternLayout.format(PatternLayout.java:503)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:301)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:159)
Exception in thread "Thread-1" at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
at org.apache.log4j.Category.callAppenders(Category.java:203)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.info(Category.java:663)
at cn.sh.flyhyp.kvdb.service.NodeService.onSystemExist(NodeService.java:55)
at cn.sh.flyhyp.kvdb.service.NodeService$1.run(NodeService.java:40)

一开始以为是log4j的问题,快速找资料,进行回滚。用原来的备份的整个工程恢复,删除正在运行的程序

启动,发现还是一样的错,就奇怪了。

  这个时候我就停掉了程序,因为之前的日志太多了,有800多M(你肯定会觉得有问题,是的,我也这样认为。日志不应该有这么多。即使这么多,也应该使用log4j的分多个文件的配置,不然的话,文件会巨大到你无法打开。这么多的日志是因为:系统与第三方合作,需要积累原始报文,进行问题定位,交流)

  没有办法打开,这个时候,我就想把原来的日志备份,这个时候停掉程序之后,发现日志还在刷。

  我记得log4j是使用缓存的,那么这些日志是刚才启动的系统的日志输出,并不代表现在启动的程序有问题,所以将原有日志备份,清空日志=

那么就奇怪了,那么之前的升级怎么会有问题呢

  这个就奇怪了了,什么回事啊。这个包从测试环境拿过来的,都验证过的了啊,这个时候就就查看系统信息,grep之后发现,尼玛

  怎么又两个进程在跑。原来由于日志文件并发太大,日志刷太猛了,shutdown命令不能关闭tomcat,需要等log4j输出完成之后才能关闭。之前一直使用kill来关闭进程,今天使用shutdown就出问题了,尼玛就关闭不了了。

两个相同的程序同时大量并发写文件,受不了啊。所以就报错了,又吓死哥一场。

  • 总结与反思:

  1、双机互备

  虽然当前系统的业务量和负载在一个很小的值,但是对于系统的稳定性来说,还是有一定的要求。特别是在今天这种情况。如果存在双机互备的情况,那么就可以升级的时候,做到几乎业务的零影响。公司的其他系统都是这样做的了,所以会在之后进行双机互备。

  2、是否可以考虑使用probe等工具进行tomcat的管理。

  由于系统是使用自定义的框架系统,并没有如spring那样的提供动态更改日志级别的功能。但是probe提供了对tomcat中的工程动态刷新日志配置信息的功能。是否值得接入??

  但是probe在网上看资料分析,probe已经很久没有更新,并且存在一定的性能消耗。所以在对性能的评测出来之前,不建议使用。

  可行方案为添加动态刷新日志级别的接口,提供日志配置的动态修改。

转载于:https://www.cnblogs.com/evermaze/p/log4jerror.html

log4j无厘头异常相关推荐

  1. 无厘头的mysql故障排除

    公司网站已经趋于正常,作为系统管理员终于可以暂时的舒一口气.在继续持续关注服务器管理与优化的同时,可以有时间停下来回顾,总结,为不断的提高积蓄能量.         先说一个让我哭笑不得的mysql故 ...

  2. 漫谈惯性、视觉暂留、潜意识、混合动力发动机、先入为主 - 纯粹的无厘头?...

    漫谈惯性.视觉暂留.潜意识.混合动力发动机.先入为主 - 纯粹的无厘头? 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保 ...

  3. 客户一个无厘头的BUG ,让我的青春痘炸了2颗

    本文预计阅读时间需要"3"分钟 今日关键词:奇葩缺陷 01 Show Time & 引言的没有 ,进行进入主题:插一句,作为从业互联网事业的测试这个重要岗位来说, 身为测试 ...

  4. 如何用费米思维解决无厘头问题

    " 上一篇文章给大家总体介绍了数据分析面试常考的几类问题,从这篇文章开始,我们就针对一些高频考题进行详细讲解.今天给大家带来的是,如何巧解费米问题" 一.什么是费米问题 在数据分析 ...

  5. electron内核版本引起的 笔记本And台式电脑的视图兼容性问题(不是浏览器兼容),全网首例!无厘头的问题

    事故出在electron +vue 的一个桌面应用上. 主视图是vue + video.js写的一个播放界面. 其他功能就不多赘述了. 有一个功能,是一个拉伸视频的宽高比例,左右上下的偏移的 < ...

  6. 区块链手机密集发布,又是一场无厘头的炒作?

    区块链的话题近年来一向很火,不仅因为比特币价格的飙升,更重要的是,越来越多人正在挖掘区块链所带来的商业机会,比如那个非常著名的"3点钟无眠区块链",而最近,一些手机厂商也将目光聚焦 ...

  7. 脑洞清奇AI君,给小猫咪们起了8000多个无厘头名字丨Colab Demo可用

    郭一璞 发自 首都机场  量子位 报道 | 公众号 QbitAI "我是一只小猫咪,我的名字叫暗之罗密欧(Romeo of Darkness)." 要是给你家主子叫这个名,它一定会 ...

  8. steam 经典 android,一人历时6年开发,这款steam特别好评的无厘头游戏终于移植安卓了……...

    原标题:一人历时6年开发,这款steam特别好评的无厘头游戏终于移植安卓了-- 姬友们爱吃甜甜圈吗? 虽然热量很高,但是那该死的甜美哪个吃货能挡呀-- 可惜手谈姬只会吃,而开发者Ben Esposit ...

  9. 冬日娜刻薄提问雷哭史冬鹏 无厘头堪比韩乔生

    腾讯体育讯 要说谁和刘翔的关系最铁,那非央视名记冬日娜莫属.作为央视的田径 专项记者,冬日娜长年追随刘翔南征北战.对于冬美女的敬业精神,我们深表钦佩.但有时候,冬日娜的提问却有些无厘头,甚至有些可刻薄 ...

最新文章

  1. Oracle数据库查看表空间是否为自增的
  2. jquery text html width heigth的用法
  3. 应用实践 | 网络智能运维下的知识图谱
  4. 计算机编程嘉兴,嘉兴自学电脑编程一对一
  5. SSH框架整合——基于XML配置文件
  6. Error: getaddrinfo ENOTFOUND localhost
  7. 设计模式-17-迭代器
  8. ueditor分布式部署
  9. 403 forbidden nginx_5,Logstash正则提取Nginx日志 - pwcc
  10. delete table 和 truncate table
  11. 未解bug001:SSM整合的过程中单元测试用Junit5复合注解整合失败
  12. 在QT下使用映美精黑白相机
  13. 章鱼网络应用链|为什么 DEIP 会选择章鱼网络?
  14. 【蓝桥杯备战】Day03
  15. 【Vue教程】01:入门前的概述:关于VUE那些事儿
  16. 可以当零食吃的排骨——椒盐排骨
  17. python高级教程-2
  18. 阿里P10、腾讯T4、华为18都是怎样的神级收入?
  19. 列表推导式写99乘法表
  20. 【Matlab/Simulink笔记】入门练习——搭建一个弹跳球实验

热门文章

  1. Jmeter脚本增强之参数化(多方式实现)(6)
  2. str和unicode类
  3. 上传文件至数据库并下载
  4. Warning: Multiple build commands for output file /xxx
  5. Extjs4开发中的一些问题
  6. 简单的绑定数据截取时间字符年月日
  7. 第十讲:Obj-C Blocks 应用
  8. Linux文件系统中的链接
  9. 2、Flutter 填坑记录篇
  10. hapi和typescript构建项目(正在更新中)