001 package org.ujmp.core.util; 002 003 import java.io.PrintStream; 004 005 import org.ujmp.core.util.io.RingBufferOutputStream; 006 import org.ujmp.core.util.io.TeeStream; 007 008 public class ConsoleUtil { 009 010 private static int systemOutBufferSize = 1024 * 1024; 011 012 private static int systemErrBufferSize = 1024 * 1024; 013 014 private static final PrintStream systemOut = System.out; 015 016 private static final PrintStream systemErr = System.err; 017 018 private static RingBufferOutputStream out = new RingBufferOutputStream(systemOutBufferSize); 019 020 private static RingBufferOutputStream err = new RingBufferOutputStream(systemErrBufferSize); 021 022 public static void startRecordSystemOut() { 023 System.setOut(new TeeStream(System.out, out)); 024 } 025 026 public static void startRecordSystemErr() { 027 System.setErr(new TeeStream(System.err, err)); 028 } 029 030 public static void stopRecordSystemOut() { 031 System.setOut(systemOut); 032 } 033 034 public static void stopRecordSystemErr() { 035 System.setErr(systemErr); 036 } 037 038 public static String getSystemOut() { 039 return out.toString(); 040 } 041 042 public static String getSystemErr() { 043 return err.toString(); 044 } 045 }