logger异常日志要点总结
Logger异常日志,企业项目中非常重要的一步,在系统调试、出错时,能够快速排查,修复。以下是关于异常日志使用的关键点。
1、真正有意义的Logger
一些用户异常信息,是返回到View层显示给用户看的,那么在前端可能就能够完成处理(例如:提示两次输入的密码不一致),要么根本不是异常(例如:提示用户没有注册)。这样的用户异常不应该出现在异常日志中,而需要记录的是技术性异常(例如:“服务器编译文件未找到”),反映真正有意义的异常到logger中。
2、察觉需要捕获异常的代码块,进行捕获
后端在进行数据更新的时候, updat/savae、insert、delete没有正确执行,此时,用try…catch去捕获异常。
//使用日志类logger
import org.apache.log4j.Logger;public class ActAreaServiceImpl implements ActAreaService{//在编写类时,得到ActAreaServiceImpl.class产生的异常日志private static final Logger logger = Logger.getLogger(ActAreaServiceImpl.class);
...try{//可能抛出异常的代码//Service层多数情况是 updat/savae、insert、delete没有正确执行}catch(Exception e) {//捕获异常并在日志中打印出来logger.error(e.getMessage(), e);
}
3、合理使用Logger框架的异常信息输出方法
运行中异常,错误信息异常,debug调试异常,Root时异常,了解、知道和会使用在常用的异常方法。
一般是logger.error()。
4、异常追踪堆栈的关键信息
异常框架在处理异常时,会保证打印输出所有相关的堆栈追踪信息,异常的所有原因记录在日志文件中,所以在调试代码时,最上层的异常就是程序异常的起因,这个信息是最重要的。
5、错误:记录日志后又向外抛出
记录日志后又重新抛出异常叫做——异常反模式(anti-pattern),不要这么做,冗余重复。
try{...} catch (Exception e) {logger.error(e.getMessage(), e);throw new RuntimeException(e.getMessage());}
6、任何时候都不要使用System.out或者System.err记录来记录logger
Java发展至今,已经有非常多的日志框架了,要相信成熟的架构体系的异常处理。不成熟的程序员异常处理会有很多逻辑漏洞,不合理的地方,使用框架比你自己处理要更好。
logger异常日志要点总结相关推荐
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- aop配置异常日志管理
项目使用的log4g输出到文件,打印日志的时候java抛出异常未被捕获,没有进行logger.error()输出,当生产环境出现异常时不方便查找. xml配置: <!-- 声明方面组件 --&g ...
- JAVA基于Slack实现异常日志报警
一.功能介绍 在我们日常开发中,如果系统在线上环境上,发生异常,开发人员不能及时知晓来修复,可能会造成重大的损失,因此后端服务中加入异常报警的功能是十分必要的,而开发一个功能全面的异常报警服务,可能会 ...
- 如何使用SpringBoot AOP 记录操作日志、异常日志?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:咫尺的梦想_w cnblogs.com/wm-dv/ ...
- 无异常日志,就不能排查问题了???
众所周知,日志是排查问题的重要手段.关于日志设计,以及怎么根据从[用户报障]环节开始到秒级定位问题这个我们下一期说(绝非套路),这一期,主要讲一下,在没有异常日志的情况下,如何定位问题.没有日志当真能 ...
- mysql主从复制 跳过表_mysql主从复制-从库跳过异常日志点
mysql主从复制-从库跳过异常日志点 来源:互联网 作者:佚名 时间:2015-03-08 08:39 mysql主从复制--从库跳过错误日志点 (本文转载,特此声明) 在MYSQL进行Replic ...
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...
最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...
- angular代码分析之异常日志设计
angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最 ...
- AOP基本概念、AOP底层实现原理、AOP经典应用【事务管理、异常日志处理、方法审计】...
1 什么是AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件 ...
最新文章
- Loadrunner日志设置与查看
- Spring IoC 源码系列(三)Spring 事件发布机制原理分析
- js排序的时间复杂度_经典排序方法的python实现和复杂度分析
- 强烈推荐一位大佬,知名银行风控分析师,学习是一辈子的事!
- [译] 关于 HTTP/3 的一些心得
- 总是记不住java的IO流用法?用N个问题教你掌握java IO流
- 又烧一辆!蔚来ES8维修时起火烧到只剩底盘 官方回应:已开启调查
- 零基础学python难吗-终于明白0基础学python难吗
- 西门子PLC编写抢答系统
- web项目对接钉钉扫码登录
- YII2.0电商平台开发笔记
- Android项目猜纸牌游戏之一 界面设计和资源文件的设计
- OpenCV——line、circle、rectangle、ellipse、polylines函数的使用和绘制文本putText函数以及绘制中文的方法。
- 需求文档 | 商业需求文档(BRD)
- CentOS7 安装过程中的多盘分区功能探讨(二)
- 回忆一年前的快乐时光
- 「美国花好几亿造出太空圆珠笔后,发现苏联航天员用铅笔」的故事真实吗?...
- FFmpeg开发(五)——Qt视频播放器之封装FFmpeg类(参考了暴风影音、迅雷影音)
- 使用sysbench进行压测达梦V8数据库
- 论文阅读《Direct Sparse Visual-Inertial Odometry Using Dynamic Marginalization》
热门文章
- C++中new和malloc
- exec vs sp_executesql
- 时间复杂度O(n^2)和O(nlog n)差距有多大?
- class CT where T : new() 泛型类约束
- 2017.5.5上午
- Qt5.6.0+OpenGL 纹理贴图首战告捷
- Android开发环境搭建Eclipse+JDK+ADT+AVD(系列一)
- jquery之bind(),live(),delegate()
- Django 上传附件报The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS错误
- java StringUtils方法全览