如何用Logger.error打印错误异常的详细堆栈信息

2024-02-22 16:18

本文主要是介绍如何用Logger.error打印错误异常的详细堆栈信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片

推荐用法

LOGGER.error("xxxx error:{}|", e.getMessage(), e);LOGGER.error("xxxx error:",  e);

使用说明

Logger类下有多个不同的error方法,根据传入参数的个数及类型的不同,自动选择不同的重载方法。

当error(Object obj)只传入一个参数时会将异常对象作为Object使用,并最终当做String打印出来,当使用两个参数error(String message, Throwable t),且第二个参数为Throwable时,才会将完整的异常堆栈打印出来。

代码示例


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class TestLogError {public static final Logger LOGGER = LogManager.getLogger(TestLogError.class);public static void main(String[] args) {try{int[] array={1,2,3,4};System.out.println(array[5]);}catch (Exception e){/*** LOGGER.error("错误信息:"+e)* 输出:* 错误信息:java.lang.ArrayIndexOutOfBoundsException: 5*/LOGGER.error("错误信息:"+e);/*** LOGGER.error("错误信息:",e)* 输出:*  错误信息:*  java.lang.ArrayIndexOutOfBoundsException: 5*  at com.syf.com.learn.TestLogError.main(TestLogError.java:14) [classes/:?]*/LOGGER.error("错误信息:",e);/***  LOGGER.error("错误信息:{}",e);*  只有一个参数时,占位符被吞掉*  输出:*  错误信息:{}*  java.lang.ArrayIndexOutOfBoundsException: 5*  at com.syf.com.learn.TestLogError.main(TestLogError.java:14) [classes/:?]*/LOGGER.error("错误信息:{}",e);/*** LOGGER.error("错误信息:{}",e,e);* 输出* 错误信息:java.lang.ArrayIndexOutOfBoundsException: 5* java.lang.ArrayIndexOutOfBoundsException: 5* at com.syf.com.learn.TestLogError.main(TestLogError.java:14) [classes/:?]*/LOGGER.error("错误信息:{}",e,e);/**推荐用法:* LOGGER.error("错误信息:{}",e.getMessage(),e);* 输出:* 错误信息:5* java.lang.ArrayIndexOutOfBoundsException: 5* at com.syf.com.learn.TestLogError.main(TestLogError.java:14) [classes/:?]*/LOGGER.error("错误信息:{}",e.getMessage(),e);}}
}

查看源码中的方法描述

根据方法重载特性,当只输入一个参数时,此对象会被当做Object进行打印输出,如果是Exception e的话,这里直接就toString()。

 /*** Logs a message object with the {@link Level#ERROR ERROR} level.** @param message the message object to log.*/void error(Object message);

根据方法重载特性,当第二个参数为Throwable时,会打印出异常信息,并且包含异常堆栈信息。

 /*** Logs a message at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}* <code>t</code> passed as parameter.** @param message the message object to log.* @param t the exception to log, including its stack trace.*/void error(String message, Throwable t);

根据方法重载特性,当第二个参数为Object时,会根据占位符进行替换并打印出错误日志。

  /*** Logs a message with parameters at error level.** @param message the message to log; the format depends on the message factory.* @param p0 parameter to the message.* @param p1 parameter to the message.*/void error(String message, Object p0, Object p1);

结论

使用LOGGER.error("xxx:"+e);是调用的error(Object message),这个方法都会将入参当作Object输出,不会打印堆栈信息。

在使用

LOGGER.error(":{}",e.getMessage(),e);

LOGGER.error("findError:",e);​​​​​​​

时会调用error(String message, Throwable t),此方法会完整的打印出错误堆栈信息。

以上就是本文的全部内容,希望对大家的学习有所帮助。

这篇关于如何用Logger.error打印错误异常的详细堆栈信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735796

相关文章

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

SpringBoot的全局异常拦截实践过程

《SpringBoot的全局异常拦截实践过程》SpringBoot中使用@ControllerAdvice和@ExceptionHandler实现全局异常拦截,@RestControllerAdvic... 目录@RestControllerAdvice@ResponseStatus(...)@Except

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

C#如何在Excel文档中获取分页信息

《C#如何在Excel文档中获取分页信息》在日常工作中,我们经常需要处理大量的Excel数据,本文将深入探讨如何利用Spire.XLSfor.NET,高效准确地获取Excel文档中的分页信息,包括水平... 目录理解Excel中的分页机制借助 Spire.XLS for .NET 获取分页信息为什么选择 S

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数