/** * */ package vroom.common.utilities.logging; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; /** * <code>LogPrintStream</code> is a {@link PrintStream} designed to print simultaneously in the console and in a file. * <p> * Creation date: Jun 17, 2010 - 11:22:22 AM * * @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a * href="http://copa.uniandes.edu.co">Copa</a> <a href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a * href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a> * @version 1.0 */ public class LogPrintStream extends PrintStream { private final PrintStream mFileStream; /** * Creates a new <code>LogPrintStream</code> that will write in both the given output stream and file. * * @param logFile * the file in which messages will be logged * @param outputStream * the base output stream (typically one of {@link System#out} or {@link System#out}) * @see PrintStream#PrintStream(OutputStream, boolean) */ public LogPrintStream(File logFile, OutputStream outputStream) throws IOException { super(outputStream, true); mFileStream = new PrintStream(logFile); } /* (non-Javadoc) * @see java.io.PrintStream#flush() */ @Override public void flush() { super.flush(); mFileStream.flush(); } /* (non-Javadoc) * @see java.io.PrintStream#append(char) */ @Override public PrintStream append(char c) { mFileStream.append(c); return super.append(c); } /* (non-Javadoc) * @see java.io.PrintStream#append(java.lang.CharSequence) */ @Override public PrintStream append(CharSequence csq) { mFileStream.append(csq); return super.append(csq); } /* (non-Javadoc) * @see java.io.PrintStream#append(java.lang.CharSequence, int, int) */ @Override public PrintStream append(CharSequence csq, int start, int end) { mFileStream.append(csq, start, end); return super.append(csq, start, end); } /* (non-Javadoc) * @see java.io.PrintStream#checkError() */ @Override public boolean checkError() { mFileStream.checkError(); return super.checkError(); } /* (non-Javadoc) * @see java.io.PrintStream#close() */ @Override public void close() { mFileStream.close(); super.close(); } /* (non-Javadoc) * @see java.io.PrintStream#write(byte[], int, int) */ @Override public void write(byte[] buf, int off, int len) { mFileStream.write(buf, off, len); super.write(buf, off, len); } /* (non-Javadoc) * @see java.io.PrintStream#write(int) */ @Override public void write(int b) { mFileStream.write(b); super.write(b); } /* (non-Javadoc) * @see java.io.FilterOutputStream#write(byte[]) */ @Override public void write(byte[] b) throws IOException { mFileStream.write(b); super.write(b); } }