Search code examples
javastdoutbukkit

Recording Java stdout and stderr


What I would like to do is record not redirect java System.out and System.err. I want to be able to save everything that is printed out, while still having it actually print to the console/default destination. I can't change the runtime. I need it to do this in the Java process, seeing as it will be in a Bukkit plugin. Thanks!


Solution

  • You can save the original values of System.out and System.err, extend PrintStream to create a class that records the output and forwards it to another PrintStream.

    Then you can just do

    System.setOut(new RecordingStream(System.out));
    System.setErr(new RecordingStream(System.err));