Java 解析Exception信息
最近的项目需要捕获系统抛出的异常,并将异常信息保存,记录以下解析Exception的方法。
- 异常详细信息
这里说的“异常详细信息”指的是平时打印到控制台的那种信息,如下图

获取方法:
package com.pantech.boot.common.systemlog.util; import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream; /**
* @author 肖政宇
* @date 2019-10-30 11:11
* 说明:异常解析
*/
public class ExceptionInformation { /**
* 异常解析
*/
public static String getExceptionInformation(Exception exception) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(outputStream);
exception.printStackTrace(printStream); String exceptionInformation = new String(outputStream.toByteArray());
printStream.close();
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return exceptionInformation;
}
}
- 异常具体信息
这里说的异常具体信息指的是,具体的某一项信息,比如异常从哪个类抛出、异常用哪个方法抛出、产生异常的代码在第几行
package com.pantech.boot.module.log.serviceimpl; import com.pantech.boot.common.systemlog.SystemException;
import com.pantech.boot.common.systemlog.util.ExceptionInformation;
import com.pantech.boot.common.systemlog.util.IpAddress;
import com.pantech.boot.module.log.entity.SystemExceptionLogEntity;
import com.pantech.boot.module.log.entity.SystemOperationLogEntity;
import com.pantech.boot.module.log.repository.SystemExceptionLogRepository;
import com.pantech.boot.module.log.service.SystemExceptionLogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; /**
* @author 肖政宇
* @date 2019-10-29 17:06
* 说明:系统异常记录
*/
@Service
public class SystemExceptionLogServiceImpl implements SystemExceptionLogService {
private final Logger logger = LoggerFactory.getLogger(SystemExceptionLogServiceImpl.class); private SystemExceptionLogRepository repository;
private IpAddress ipAddress; @Autowired
public void setRepository(SystemExceptionLogRepository repository) {
this.repository = repository;
} @Autowired
public void setIpAddress(IpAddress ipAddress) {
this.ipAddress = ipAddress;
} /**
* 保存一条系统异常
*
* @param systemExceptionLog - 异常信息
*/
@Override
public SystemExceptionLogEntity save(SystemExceptionLogEntity systemExceptionLog) {
return repository.save(systemExceptionLog);
} /**
* 用于手动添加异常日志
*
* @param e - 异常类型
*/
@Override
public SystemExceptionLogEntity exceptionLog(Exception e) {
/**
* 1、解析异常信息
*/
//获取异常栈首个元素,用以解析异常部分信息
StackTraceElement stackTraceElement = e.getStackTrace()[0];
//异常类型
String exceptionType = e.toString();
//异常抛出于某个类
String className = stackTraceElement.getClassName();
//异常抛出于某个方法
String methodName = stackTraceElement.getMethodName();
//异常抛出于第几行
int lineNumber = stackTraceElement.getLineNumber();
//异常抛出地点详细信息
String throwPlace = className + "." + methodName + "[" + lineNumber + "]";
//异常详细信息
String content = ExceptionInformation.getExceptionInformation(e);
String[] con = content.split("\n");
if (con.length > 50) {
//保存前50行
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 50; i++) {
stringBuilder.append(con[i]);
stringBuilder.append("\n");
}
content = stringBuilder.toString();
}
//ip地址
String ip = ipAddress.getIpAddress();
/**
* 2、保存异常信息到数据库
*/
SystemExceptionLogEntity systemExceptionLog = new SystemExceptionLogEntity();
systemExceptionLog.setExceptionType(exceptionType);
systemExceptionLog.setIpAddress(ip);
systemExceptionLog.setThrowPlace(throwPlace);
systemExceptionLog.setContent(content);
return this.save(systemExceptionLog);
}
}
Java 解析Exception信息的更多相关文章
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- 使用htmlunit在线解析网页信息
前言 最近工作上遇到一个问题,后端有一个定时任务,需要用JAVA每天判断法定节假日.周末放假,上班等情况, 其实想单独通过逻辑什么的去判断中国法定节假日的放假情况,基本不可能,因为国家每一年的假期可能 ...
- java读取照片信息 获取照片拍摄时的经纬度
项目结构 源码:ImageInfo.zip 第一步:添加需要的架包metadate-extractor.jar 架包下载地址:https://code.google.com/p/metadata-ex ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
- java解析xml的几种方式
java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...
- Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享
Java解析OFFICE(word,excel,powerpoint)以及PDF的实现方案及开发中的点滴分享 在此,先分享下写此文前的经历与感受,我所有的感觉浓缩到一个字,那就是:"坑&qu ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- Java解析XML:Jdom解析和SAX解析
今天看了Java解析XML的几种方法,记录一下 1.Jdom解析 (1)读取XML内容 private static void readXML() { // TODO Auto-generated m ...
- XML基础+Java解析XML +几种解析方式的性能比较
XML基础+Java解析XML 一:XML基础 XML是什么: 可扩展的标记语言 XML能干什么: 描述数据.存储数据.传输(交换)数据. XML与HTML区别: 目的不一样 XML 被设计用来描述数 ...
随机推荐
- list extend 和 append
append 一次追加一个列表 extend 一次追加所有的元素 单个的形式加入
- @atcoder - Japanese Student Championship 2019 Qualification - F@ Candy Retribution
目录 @description@ @solution@ @accepted code@ @details@ @description@ 请找到满足以下条件的长度为 N 的非负整数序列 A1, A2, ...
- AFNetworkingErrorDomain 错误
AFNetworking and POST Request I'm getting this response in error.userInfo while making a POST reques ...
- EC round 33 D. Credit Card 贪心
因为到为0的点,充钱的范围都是不确定的,我们维护一个满足条件的最小值以及满足条件的最大值. 当min>d时,代表已经满足条件限制了 当a[ i ] = 0 并且 max<0,代表需要充钱, ...
- 洛谷 2279 [HNOI2003]消防局的设立
Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了 ...
- Core Data 数据出现Fault
I am mapping Json Data from Server using Restkit and I am Displaying those data by fetching from db. ...
- H3C Comware的作用
- [C#] Parallel.For的线程数
Parallel.For会自动判断同时运行多少个线程,但你也可以进行干预. ParallelOptions可以设置Parallel.For最大的并发线程.缺省的最大线程数是CPU核数.这通常是不够多的 ...
- 装机必备 Windows 操作系统ISO镜像资源
小编今天使用VMware虚拟机软件搭建Win7系统时,开始一直不成功总是出现:Start booting from CD...Directory "EZBOOT" not foun ...
- [转]Java Web工程目录结构
说明 介绍java web 工程的基本结构目录.记录java web 工程结构的学习. Java web 结构 java web严格来说分为两类工程结构:一个是工程编译目录结构,一个是工程发布目录结构 ...