WEB开发网
开发学院WEB开发Jsp Redirect output(stdout/stderr) to a frame 阅读

Redirect output(stdout/stderr) to a frame

 2008-01-05 08:55:13 来源:WEB开发网   
核心提示:import java.awt.*; import java.awt.event.*; import java.io.*; public class RedirectedFrame extends Frame { TextArea aTextArea = new TextArea(); PRintStream aP
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class RedirectedFrame extends Frame {
   TextArea aTextArea = new TextArea();
   PRintStream aPrintStream  =
    new PrintStream(
     new FilteredStream(
      new ByteArrayOutputStream()));

   boolean logFile;

   RedirectedFrame(boolean logFile) {
    this.logFile = logFile;
    System.setOut(aPrintStream);
    System.setErr(aPrintStream);
    setTitle("Error message");
    setSize(500,300);
    setLayout(new BorderLayout());
    add("Center" , aTextArea);
    displayLog();
    addWindowListener
      (new WindowAdapter() {
       public void windowClosing(WindowEvent e) {
         dispose();
         }
       }
      );
    }

   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 void displayLog() {
    Dimension dim = getToolkit().getScreenSize();
    Rectangle abounds = getBounds();
    Dimension dd = getSize();
    setLocation((dim.width - abounds.width) / 2,
      (dim.height - abounds.height) / 2);
    setVisible(true);
    requestFocus();
    }

   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();
      }
    }
   }

Tags:Redirect output stdout

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接