public class RedirectedFrame extends Frame { TextArea aTextArea = new TextArea(); PRintStream aPrintStream = new PrintStream( new FilteredStream( new ByteArrayOutputStream()));
class FilteredStream extends FilterOutputStream { public FilteredStream(OutputStream aStream) { super(aStream); }
public void write(byte b[]) throws IOException { String aString = new String(b); aTextArea.append(aString); }
public void write(byte b[], int off, int len) throws IOException { String aString = new String(b , off , len); aTextArea.append(aString); if (logFile) { FileWriter aWriter = new FileWriter("error.log", true); aWriter.write(aString); aWriter.close(); } } }
public static void main(String s[]){ try { // force an exception for demonstration purpose Class.forName("unknown").newInstance(); } catch (Exception e) { // for applet, always RedirectedFrame(false) RedirectedFrame r = new RedirectedFrame(true); e.printStackTrace(); } } }