Java 获取堆栈跟踪唯一编号
是否有一种方法可以为出现异常后的每个Java堆栈跟踪分配唯一的id?我想获取该号码并使用它进行更快的故障排除。为什么不创建一个自定义异常并散列stacktrace并将其设置为唯一idJava 获取堆栈跟踪唯一编号,java,Java,是否有一种方法可以为出现异常后的每个Java堆栈跟踪分配唯一的id?我想获取该号码并使用它进行更快的故障排除。为什么不创建一个自定义异常并散列stacktrace并将其设置为唯一id import org.apache.commons.lang.exception.ExceptionUtils; public class MyException extends Exception { private static final long serialVersionUID = -21459
import org.apache.commons.lang.exception.ExceptionUtils;
public class MyException extends Exception {
private static final long serialVersionUID = -2145930259049207199L;
private final int uniqueId;
public MyException(String message) {
super(message);
this.uniqueId = ExceptionUtils.getStackTrace(this).hashCode();
}
public int getUniqueId() {
return uniqueId;
}
}
如果您希望每条消息都有一个真正唯一的id(即,您不想跟踪重复的exeption消息),您可以在构造函数中相应地设置uniqueId intead:
this.uniqueId = UUID.randomUUID().toString();
关于这个:不清楚你在找什么。某种散列值就足够了吗?@Henry是的,将为每个错误堆栈打印到日志中的唯一散列值将足够你需要做一些实验,但是编写一个散列函数来散列对您来说很重要的信息应该不会太难。为了更快地“排除故障”,您正在寻求错误的解决方案,请使用日志框架报告程序状态以及文件和行号。e、 不过请注意:散列码不是唯一的,不同的散列码可能(对于较长的字符串也会)相互冲突。非常正确,但我猜这正是他想要的(跟踪发生的重复异常)。如果他想要一个唯一的,那么他可以只设置uniqueId=UUID.randomuid().toString()。注意,这个解决方案使用的是Apache库,而不是普通的Java。