Rev | Line | |
---|
[886] | 1 | package net.oni2.aeinstaller.backend;
|
---|
| 2 |
|
---|
| 3 | import java.io.ByteArrayOutputStream;
|
---|
| 4 | import java.io.File;
|
---|
| 5 | import java.io.FileWriter;
|
---|
| 6 | import java.io.IOException;
|
---|
| 7 | import java.io.OutputStream;
|
---|
| 8 | import java.io.PrintStream;
|
---|
| 9 |
|
---|
| 10 | /**
|
---|
| 11 | * @author Christian Illy
|
---|
| 12 | */
|
---|
| 13 | public class LogPrintStream extends OutputStream {
|
---|
| 14 | private static LogPrintStream instance = new LogPrintStream();
|
---|
| 15 |
|
---|
| 16 | private ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
---|
| 17 | private FileWriter fw = null;
|
---|
| 18 | private PrintStream stdOut = null;
|
---|
| 19 |
|
---|
| 20 | private boolean logStdOut = true;
|
---|
| 21 |
|
---|
| 22 | private LogPrintStream() {
|
---|
| 23 | stdOut = System.out;
|
---|
| 24 |
|
---|
| 25 | PrintStream ps = new PrintStream(this);
|
---|
| 26 | System.setOut(ps);
|
---|
| 27 | System.setErr(ps);
|
---|
| 28 | }
|
---|
| 29 |
|
---|
| 30 | /**
|
---|
| 31 | * @return Logger instance
|
---|
| 32 | */
|
---|
| 33 | public static LogPrintStream getInstance() {
|
---|
| 34 | return instance;
|
---|
| 35 | }
|
---|
| 36 |
|
---|
| 37 | /**
|
---|
| 38 | * Set the file to log to
|
---|
| 39 | *
|
---|
| 40 | * @param logFile
|
---|
| 41 | * Log file
|
---|
| 42 | * @throws IOException
|
---|
| 43 | * Should not happen?!
|
---|
| 44 | */
|
---|
| 45 | public void setFile(File logFile) throws IOException {
|
---|
| 46 | if (fw != null)
|
---|
| 47 | fw.close();
|
---|
| 48 | fw = new FileWriter(logFile);
|
---|
| 49 | }
|
---|
| 50 |
|
---|
| 51 | @Override
|
---|
| 52 | public void write(int b) throws IOException {
|
---|
| 53 | baos.write(b);
|
---|
| 54 | if (logStdOut)
|
---|
| 55 | stdOut.write(b);
|
---|
| 56 | if (fw != null)
|
---|
| 57 | fw.write(b);
|
---|
| 58 | }
|
---|
| 59 |
|
---|
| 60 | /**
|
---|
| 61 | * @return Get the text that has been written to log up to now
|
---|
| 62 | */
|
---|
| 63 | public String getLog() {
|
---|
| 64 | return baos.toString();
|
---|
| 65 | }
|
---|
| 66 |
|
---|
| 67 | @Override
|
---|
| 68 | public void flush() throws IOException {
|
---|
| 69 | stdOut.flush();
|
---|
| 70 | baos.flush();
|
---|
| 71 | if (fw != null)
|
---|
| 72 | fw.flush();
|
---|
| 73 | }
|
---|
| 74 |
|
---|
| 75 | @Override
|
---|
| 76 | public void close() throws IOException {
|
---|
| 77 | if (fw != null)
|
---|
| 78 | fw.close();
|
---|
| 79 | super.close();
|
---|
| 80 | }
|
---|
| 81 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.