开发者社区> 山月风成> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

logger异常日志要点总结

简介: 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发展至今,已经有非常多的日志框架了,要相信成熟的架构体系的异常处理。不成熟的程序员异常处理会有很多逻辑漏洞,不合理的地方,使用框架比你自己处理要更好。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Jaeger
Jaeger
16 0
学妹问我Java异常是怎么回事,讲了半夜才明白,速度收藏!!!记得点赞和关注
异常是Java开发中常见的,也是程序最不愿意看到的,因为有异常基本上就代表我们写的代码有bug,很烦,游戏服务端有异常上报系统,每当半夜收到异常上报都慌的一笔。今天就扒一扒异常,开始走起。
25 0
Android日志系统驱动程序Logger源代码分析
  我们知道,在Android系统中,提供了一个轻量级的日志系统,这个日志系统是以驱动程序的形式实现在内核空间的,而在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统,取决于你编写的是Android应用程序还是系统组件。
603 0
+关注
山月风成
君子不以辞尽人,故天下有道,则行有枝叶;天下无道,则辞有枝叶。热爱技术岗位,因为这里单纯友好,自由和分享。
37
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载