最近遇到的一个问题:
如何将exception的具体内容记入到日志中,虽然有e.getMessage()但是还是满足不了需求,当错误发生的时候无法定位到code抛出异常的具体位置。
以前用得下面这个方法,但是并不能将printStackTrace输出的内容记入日志,于是goole了下,有答案了。
e.printStackTrace();
log(e.getMessage());
例子:
public static String getTrace(Throwable t) {
StringWriter stringWriter= new StringWriter();
PrintWriter writer= new PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer buffer= stringWriter.getBuffer();
return buffer.toString();
}
public static void main(String[] args)
{
try{
byte[] a=args[0].getBytes();
}catch (Exception ex){
String log = "log/mytest.txt";
ex.printStackTrace();
SystemLog.log(log, getTrace(ex));
}
}
具体内容如下:
[time]:2011-06-08 17:54:25[message]:java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
at SystemLog.main(SystemLog.java:79)