Да. Фреймворки журналирования (то есть log4j) являются лучшими, isDebugMode
удобен в среде разработки , но , если вам действительно нужно "подать" ваш стандартный вывод, вам может понравиться.
import java.io.PrintStream;
import java.io.File;
public class TeeStream extends PrintStream {
PrintStream out;
public TeeStream(PrintStream out1, PrintStream out2) {
super(out1);
this.out = out2;
}
public void write(byte buf[], int off, int len) {
try {
super.write(buf, off, len);
out.write(buf, off, len);
} catch (Exception e) {
}
}
public void flush() {
super.flush();
out.flush();
}
}
http://www.exampledepot.com/egs/java.lang/Redirect.html
// import java.io.FileOutputStream;
String dateString = new SimpleDateFormat("yyyyMMdd").format(new Date());
File logFile = new File("mylogfile_" + dateString +".log");
PrintStream logOut = new PrintStream(new FileOutputStream(logFile, true));
PrintStream teeStdOut = new TeeStream(System.out, logOut);
PrintStream teeStdErr = new TeeStream(System.err, logOut);
System.setOut(teeStdOut);
System.setErr(teeStdErr);
Вы скоро найдете LOG.somelevel(msg)
гораздо более управляемым, чем System.out.println(msg)
. Замечательно поднимать уровень журнала, когда все работает хорошо, и понижать уровень, когда это не так, без развертывания отладочной сборки.