什么,没打日志?这怎么排查问题?
最近发现一个监控服务一直没有采集到监控数据,最新的监控数据还是在项目切换为Spring Boot框架之前产生的。初步查看了一下日志竟然也没有发现任何异常信息,翻了翻代码发现数据收集的接口不论抛不抛出异常应该都会忠实的记录数据才对,问题很可能跟切换框架有关系,但是这个范围有点广啊导致排查陷入了停滞,程序员感受到了被程序支配的恐惧,但是问题还是得解决啊。
程序员遇到这种自相矛盾的问题一般有两种情况:
- 一种是我X不对啊,应该执行这块代码怎么没执行?
- 一种是我X不对啊,不应该执行这块代码怎么执行了?
第一种比第二种好解决一点,幸运的是这次遇到的是第一种情况。但是程序员在一边心想着手上开发的代码另一边哪TMD有心思查各种稀奇古怪的问题啊?关键还是TMD前人留下的代码!这时候可能思维就有些混乱像无头苍蝇一样寄希望于各种瞎猜战术,但是可想而知对于长这么大买饮料都是“谢谢惠顾”的我来说,这不太可能解决问题。
其实回过头想想排查问题最重要的手段还是日志(所以在写代码的时候写好日志比写好注释重要的多了),日志没有打印出来异常信息仔细想想有两种可能(排除掉太空辐射导致的幽灵情况),一种是确实没有执行,另一种是执行了但是由于种种原因日志框架没有输出出来。这时候猛然想起来一个细节:切换到Spring Boot之后System.out标准输出的日志没有打印出来,由于这种方式打印的日志通常无关紧要所以一直没有解决这个问题,那会不会异常信息产生到标准输出或标准错误中去了呢?程序是以nohup java -cp >/dev/null 2>&1 &这种方式启动的,标准输出和标准错误直接丢弃了,于是改成nohup java -cp >./sys.out 2>&1 &这种方式并查看sys.out内容终于发现了猫腻:程序抛出了Error!
到这里大家大概已经看出来问题了,程序仅仅捕获了Exception但是却抛出了Error,错误信息最终会输出到标准错误中去,而恰恰程序的启动方式把标准错误的信息丢弃了!
找到问题后解决方法就很简单了:
- 一方面代码里catch住Error
- 另一方面添加jul-over-slf4j依赖把标准输出和标准错误输出重定向到日志中去
复盘总结一下,两个因素交织在一起导致没能很快定位问题,这再次提示我打印日志很重要,日志问题要提早解决;同时遇到类似问题加个条件反射首先往Error这块想。然而更重要的是,遇到了自相矛盾的问题怎样能更快的梳理清楚思路,恐怕自己还需要更多的摸索。
参考

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5G加持,智能穿戴产业“起死回生”
云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 从2013年的元年至今,漫长的寒冬之后智能穿戴产业似乎嗅到了春天的气息。 IDC近日发布的《中国可穿戴设备市场季度跟踪报告,2019年第三季度》显示,该季度中国可穿戴设备市场出货量2715万台,同比增长45.2%。该报告还预计到2023年,中国可穿戴设备市场出货量将接近2亿台。 是什么原因让智能穿戴重新“燃起”? 5G时代的到来,智能穿戴成为移动互联网、物联网时代的关键入口。 智能穿戴并非狭义上的人体可穿戴设备,而是覆盖各行业的智能化未来。随着医学需求拉动,在医疗智能可穿戴的带动下,专家预言智能可穿戴市场将会迎来新一波的热潮。 5G技术助燃智能可穿戴市场 回顾往昔,2013年匆匆登场的厂商大多数已经退去,一度曾经火热的各种智能可穿戴产品也已经消失或者卖身巨头。 但智能可穿戴设备真的从此没有机会了吗? 当然不是。从IDC公布的数据来看,智能可穿戴的出货量依然逐年增加。 IDC数据显示,2016年以来中...
- 下一篇
开源促进会 OSI 联合创始人辞职:在许可方面走错了路
认定 OSI 不尊重自由,联合创始人 Bruce Perens 提出辞职。 去年,律师 Van Lindberg代表分布式开发平台 HoloChain 起草了一个名为“密码自治许可证(Cryptographic Autonomy License,CAL)”的软件许可证,并将其提交给开源促进会 OSI 审批。 符合 OSI 开源定义的许可证被认定为开源许可证,比如目前比较流行的 MIT、Apache-2.0 与 BSD 3-Clause 等都在 OSI 认定的开源许可证列表中。 但是关于是否批准 CAL 许可证引起了 OSI 内部的争论,当地时间 1 月 2日,在讨论审批 CAL 第 4 版本草案的过程中,OSI联合创始人Bruce Perens 提出了辞职。他认为组织正在朝着接受不尊重自由的许可证的方向迈进,这使得其不得不退出。最初的Open Source Definition(OSD,开源定义)正是由 Bruce Perens 起草的。 Well, it seems to me that the organization is rather enthusiastically head...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启