Class LoggingByteArrayOutputStream (1.42.0)

public class LoggingByteArrayOutputStream extends ByteArrayOutputStream

Thread-safe byte array output stream that logs what was written to it when the stream is closed.

Use this as a safe way to log a limited amount of content. As content is written to the stream, it is stored as a byte array, up to the maximum number of bytes limit that was set in the constructor. Note that if the maximum limit is set too high, it risks an OutOfMemoryError on low-memory devices. This class also keeps track of the total number of bytes written, regardless of whether they were logged. On #close(), it then logs two records to the specified logger and logging level: the total number of bytes written, and the bounded content logged (assuming charset "UTF-8"). Any control characters are stripped out of the content.

Inheritance

java.lang.Object > java.io.OutputStream > ByteArrayOutputStream > LoggingByteArrayOutputStream

Constructors

LoggingByteArrayOutputStream(Logger logger, Level loggingLevel, int maximumBytesToLog)

public LoggingByteArrayOutputStream(Logger logger, Level loggingLevel, int maximumBytesToLog)
Parameters
NameDescription
loggerLogger

logger

loggingLevelLevel

logging level

maximumBytesToLogint

maximum number of bytes to log (may be 0 to avoid logging content)

Methods

close()

public synchronized void close()
Overrides Exceptions
TypeDescription
IOException

getBytesWritten()

public final synchronized int getBytesWritten()

Returns the bytes written to the stream (may or may not have been logged).

Returns
TypeDescription
int

getMaximumBytesToLog()

public final int getMaximumBytesToLog()

Returns the maximum number of bytes to log (may be 0 to avoid logging content).

Returns
TypeDescription
int

write(byte[] b, int off, int len)

public synchronized void write(byte[] b, int off, int len)
Parameters
NameDescription
bbyte[]
offint
lenint
Overrides

write(int b)

public synchronized void write(int b)
Parameter
NameDescription
bint
Overrides