001 package railo.runtime.exp; 002 003 import java.io.PrintWriter; 004 005 import railo.commons.io.log.Log; 006 import railo.commons.lang.ExceptionUtil; 007 import railo.commons.lang.StringUtil; 008 import railo.runtime.PageContext; 009 import railo.runtime.config.Config; 010 import railo.runtime.engine.ThreadLocalPageContext; 011 import railo.runtime.op.Caster; 012 013 /** 014 * Handle Excpetions 015 */ 016 public final class ExceptionHandler { 017 018 public static void log(Config config, Throwable t) { 019 020 PageException pe=Caster.toPageException(t); 021 pe.printStackTrace(config.getErrWriter()); 022 023 // apllication Log 024 StringBuffer message=new StringBuffer(pe.getMessage()); 025 if(!StringUtil.isEmpty(pe.getDetail())) message.append("; ").append(pe.getDetail()); 026 config.getApplicationLogger().log(Log.LEVEL_ERROR, "",message.toString()); 027 028 // exception.log 029 String st = ExceptionUtil.getStacktrace(pe,true); 030 config.getExceptionLogger().log(Log.LEVEL_ERROR, "",st); 031 032 033 } 034 035 public static void printStackTrace(PageContext pc, Throwable t) { 036 PrintWriter pw = (pc.getConfig()).getErrWriter(); 037 t.printStackTrace(pw); 038 pw.flush(); 039 } 040 041 public static void printStackTrace(Throwable t) { 042 PageContext pc = ThreadLocalPageContext.get(); 043 if(pc!=null)printStackTrace(pc,t); 044 else t.printStackTrace(); 045 } 046 }