http://outofmemory.cn/code-snippet/2307/java-redirect-program-standard-output-System-out-come-file
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
/**
* Main.java
*
* @author outofmemory.cn
*/
public class Main {
/**
*将System.out重定向到文件
*
*/
public void redirectSystemOut() {
try {
System.setOut(new PrintStream(new FileOutputStream("system_out.txt")));
//System.setOut(new PrintStream(new LoggerStream(Logger.getLogger("out"),Level.INFO, System.out)));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
return;
}
System.out.println("This won't get displayed on the console, but sent to the file system_out.txt");
}
/**
* 启动程序
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new Main().redirectSystemOut();
}
}
public class LoggerStream extends OutputStream {
private final Logger logger;
private final Level logLevel;
private final OutputStream outputStream;
public LoggerStream(Logger logger, Level logLevel, OutputStream outputStream) {
super();
this.logger = logger;
this.logLevel = logLevel;
this.outputStream = outputStream;
}
@Override
public void write(byte[] b) throws IOException {
outputStream.write(b);
String string = new String(b);
if (!string.trim().isEmpty())
logger.log(logLevel, string);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
outputStream.write(b, off, len);
String string = new String(b, off, len);
if (!string.trim().isEmpty())
logger.log(logLevel, string);
}
@Override
public void write(int b) throws IOException {
outputStream.write(b);
String string = String.valueOf((char) b);
if (!string.trim().isEmpty())
logger.log(logLevel, string);
}
}