package edu.ualberta.med.biobank.server.logging; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.io.StringWriter; public class ExceptionUtils { private static final String FILE_PREFIX_DEFAULT = "biobanklogappender"; //$NON-NLS-1$ public static void writeMsgToTmpFile(Throwable t) { // print into server logs but save in a file anyway t.printStackTrace(); writeMsgToTmpFile(FILE_PREFIX_DEFAULT, t); } /** * Writes fatal errors to a log file on the system's current directory. * * @param t */ public static void writeMsgToTmpFile(String fileprefix, Throwable t) { FileWriter writer = null; try { File f = new File(fileprefix + System.currentTimeMillis() + ".log"); //$NON-NLS-1$ writer = new FileWriter(f); writer.write(getErrorAndStack(t)); writer.flush(); } catch (Exception e) { } finally { try { writer.close(); } catch (Exception e1) { } } } public static String getErrorAndStack(Throwable t) { if (t == null) { return null; } return t.getMessage() + System.getProperty("line.separator") //$NON-NLS-1$ + getStackTrace(t).toString(); } public static StringBuffer getStackTrace(Throwable t) { StringWriter stringWriter = new java.io.StringWriter(); t.printStackTrace(new PrintWriter(stringWriter)); return stringWriter.getBuffer(); } }