为什么捕获异常后不要使用e.printStackTrace()打印日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 为什么捕获异常后不要使用e.printStackTrace()打印日志

问题一:为什么打印日志的代码不允许失败,阻断流程?


为什么打印日志的代码不允许失败,阻断流程?


参考回答:

打印日志的代码不允许失败,阻断流程,是因为要确保不会因为日志打印语句抛出异常造成业务流程中断。例如,如果shop为null,则shop.getId()会抛出NullPointerException,导致业务流程被中断。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/634163



问题二:为什么应用中不可直接使用日志系统(Log4j、Logback)中的API?


为什么应用中不可直接使用日志系统(Log4j、Logback)中的API?


参考回答:

应用中不可直接使用日志系统(Log4j、Logback)中的API,是因为这会导致系统代码与日志系统强耦合,后续切换日志实现时会产生较大的改造成本。使用SLF4J或JCL等日志框架的API可以解耦具体日志实现,便于后续维护和保证日志处理方式统一。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/634165



问题三:为什么声明日志工具对象Logger应声明为private static final?


为什么声明日志工具对象Logger应声明为private static final?


参考回答:

声明日志工具对象Logger为private static final是为了防止被其他类非法使用,避免重复创建对象,防止对象被序列化带来的安全风险,并确保在类的生命周期内无需变更logger。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/634166



问题四:为什么对于trace/debug/info级别的日志输出,必须进行日志级别的开关判断?


为什么对于trace/debug/info级别的日志输出,必须进行日志级别的开关判断?


参考回答:

对于trace/debug/info级别的日志输出,进行日志级别的开关判断是为了避免在配置较低日志级别时执行不必要的字符串拼接操作,浪费系统资源。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/634192



问题五:为什么捕获异常后不要使用e.printStackTrace()打印日志?


为什么捕获异常后不要使用e.printStackTrace()打印日志?


参考回答:

捕获异常后不要使用e.printStackTrace()打印日志,因为这种方式打印的堆栈日志与业务代码日志交错混合,不利于排查问题。同时,如果信息过多,可能会导致内存满和系统请求阻塞。


关于本问题的更多回答可点击原文查看:

https://developer.aliyun.com/ask/634167

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3天前
|
JSON 缓存 fastjson
一行日志引发的系统异常
本文记录了一行日志引发的系统异常以及作者解决问题的思路。
|
12天前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
|
18天前
|
监控 安全 Linux
在Linux中,如何查看和审计系统日志文件以检测异常活动?
在Linux中,如何查看和审计系统日志文件以检测异常活动?
|
2月前
|
运维
系统日志使用问题之如何防止在打印参数时遇到NPE(空指针异常)
系统日志使用问题之如何防止在打印参数时遇到NPE(空指针异常)
|
4月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之从Oracle数据库同步数据时,checkpoint恢复后无法捕获到任务暂停期间的变更日志,如何处理
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
监控
监控治理问题之想规范化异常抛出和日志使用以降低CDO报警噪音,如何解决
监控治理问题之想规范化异常抛出和日志使用以降低CDO报警噪音,如何解决
|
3月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
关系型数据库 MySQL 数据库
MySQL建表异常日志
MySQL建表异常日志
26 0
|
4月前
|
监控 Python
Python中精通异常日志记录
Python中精通异常日志记录
31 0
|
13天前
|
Kubernetes Ubuntu Windows
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
【Azure K8S | AKS】分享从AKS集群的Node中查看日志的方法(/var/log)
下一篇
DDNS