/** * 过滤不重要的StackTrace,只保留与项目相关的StackTrace * */ public static String getExceptionStackTrace(Throwable e) { return getExceptionStackTrace(e, "com\\.(xiaonuo|runqin|sdk|onecode).*", "xiaonuo|baomidou"); } /** * 过滤不重要的StackTrace,只保留与项目相关的StackTrace * * @throws Exception */ public static String getExceptionStackTrace(Throwable e, String includesRegex, String excludes) { StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw)); String result = sw.toString(); boolean[] firstTrackLine = new boolean[]{true}; if (includesRegex != null) { result = (new RegexReplace(result, "( at )(.*)(\r?\n)") { @Override public String getReplacement(Matcher matcher) { if (firstTrackLine[0]) { firstTrackLine[0] = false; return matcher.group(); } else if (matcher.group(2).matches(includesRegex)) return matcher.group(); else return ""; } }).replaceAll(); } return result; }
import java.util.regex.Matcher;
import java.util.regex.Matcher; import java.util.regex.Pattern; abstract public class RegexReplace { private String _regex,_source; private int _flags=0;//Pattern.CASE_INSENSITIVE|Pattern.DOTALL; public RegexReplace(String source,String regex){ this._regex=regex;this._source=source; } public RegexReplace(String source,String regex,int flags) { this(source,regex); this._flags=flags; } abstract public String getReplacement(Matcher matcher); public String replaceAll(){ Pattern p=Pattern.compile(_regex,_flags); Matcher m=p.matcher(_source); StringBuffer result=new StringBuffer(); while(m.find()){ // System.out.println(content.substring(m.start(),m.end())); // System.out.println(m.group(2)); String replacement=getReplacement(m); if(replacement!=null){ if(replacement.indexOf('$')>=0) replacement=replacement.replace("$","\\$"); //replacement=EasyStr.ReplaceAll(replacement,"$","\\$",false); m.appendReplacement(result,replacement); } } m.appendTail(result); return result.toString(); } public String replaceFirst(){ Pattern p=Pattern.compile(_regex,_flags); Matcher m=p.matcher(_source); StringBuffer result=new StringBuffer(); if(m.find()){ // System.out.println(content.substring(m.start(),m.end())); // System.out.println(m.group(2)); String replacement=getReplacement(m); if(replacement!=null){ if(replacement.indexOf('$')>=0) replacement=replacement.replace("$","\\$"); //System.out.println(replacement); m.appendReplacement(result,replacement); } } m.appendTail(result); return result.toString(); } }
调用:String sMsg = CommonExceptionUtil.getExceptionStackTrace(e);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2023-06-28 Tomcat 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
2023-06-28 Tomcat通过setenv.bat指定jdk和jre(相对路径)
2023-06-28 tomcat 协议处理程序初始化失败
2023-06-28 Linux 系统使用war包部署iServer(中间件:Tomcat)[Windows 相同操作]
2022-06-28 MySQL获取分组中的第一条数据和最后一条数据
2020-06-28 wpf 全局异常捕获处理
2007-06-28 通过HttpWebResponse和HttpWebRequest 获取http地址上的图片