# Class SystemLogHandler

java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.io.PrintStream
org.apache.tomcat.util.log.SystemLogHandler

All Implemented Interfaces:
  `Closeable, Flushable, Appendable, AutoCloseable`

public class SystemLogHandler extends PrintStream
This helper class may be used to do sophisticated redirection of System.out and System.err on a per Thread basis. A stack is implemented per Thread so that nested startCapture and stopCapture can be used.

## Constructor Summary

Constructors
Constructor
Description
`SystemLogHandler(PrintStream wrapped)`
Construct the handler to capture the output of the given steam.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`checkError()`
`void`
`close()`
`protected PrintStream`
`findStream()`
Find PrintStream to which the output must be written to.
`void`
`flush()`
`void`
`print(boolean b)`
`void`
`print(char c)`
`void`
`print(char[] s)`
`void`
`print(double d)`
`void`
`print(float f)`
`void`
`print(int i)`
`void`
`print(long l)`
`void`
`print(Object obj)`
`void`
`print(String s)`
`void`
`println()`
`void`
`println(boolean x)`
`void`
`println(char x)`
`void`
`println(char[] x)`
`void`
`println(double x)`
`void`
`println(float x)`
`void`
`println(int x)`
`void`
`println(long x)`
`void`
`println(Object x)`
`void`
`println(String x)`
`protected void`
`setError()`
`static void`
`startCapture()`
Start capturing thread's output.
`static String`
`stopCapture()`
Stop capturing thread's output.
`void`
`write(byte[] b)`
`void`
`write(byte[] buf, int off, int len)`
`void`
`write(int b)`

### Methods inherited from class PrintStream

`append, append, append, charset, clearError, format, format, printf, printf, writeBytes`

### Methods inherited from class OutputStream

`nullOutputStream`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SystemLogHandler

public SystemLogHandler(PrintStream wrapped)
Construct the handler to capture the output of the given steam.

Parameters:
  `wrapped` - The stream to capture

## Method Details

### startCapture

public static void startCapture()
Start capturing thread's output.

### stopCapture

public static String stopCapture()
Stop capturing thread's output.

Returns:
  The captured data

### findStream

protected PrintStream findStream()
Find PrintStream to which the output must be written to.

Returns:
  the print stream

### flush

public void flush()

Specified by:
  `flush` in interface `Flushable`
Overrides:
  `flush` in class `PrintStream`

### close

public void close()

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `PrintStream`

### checkError

public boolean checkError()

Overrides:
  `checkError` in class `PrintStream`

### setError

protected void setError()

Overrides:
  `setError` in class `PrintStream`

### write

public void write(int b)

Overrides:
  `write` in class `PrintStream`

### write

public void write(byte[] b) throws IOException

Overrides:
  `write` in class `PrintStream`
Throws:
  `IOException`

### write

public void write(byte[] buf, int off, int len)

Overrides:
  `write` in class `PrintStream`

### print

public void print(boolean b)

Overrides:
  `print` in class `PrintStream`

### print

public void print(char c)

Overrides:
  `print` in class `PrintStream`

### print

public void print(int i)

Overrides:
  `print` in class `PrintStream`

### print

public void print(long l)

Overrides:
  `print` in class `PrintStream`

### print

public void print(float f)

Overrides:
  `print` in class `PrintStream`

### print

public void print(double d)

Overrides:
  `print` in class `PrintStream`

### print

public void print(char[] s)

Overrides:
  `print` in class `PrintStream`

### print

public void print(String s)

Overrides:
  `print` in class `PrintStream`

### print

public void print(Object obj)

Overrides:
  `print` in class `PrintStream`

### println

public void println()

Overrides:
  `println` in class `PrintStream`

### println

public void println(boolean x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(char x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(int x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(long x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(float x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(double x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(char[] x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(String x)

Overrides:
  `println` in class `PrintStream`

### println

public void println(Object x)

Overrides:
  `println` in class `PrintStream`