Package com.google.api.client.util
Class LoggingByteArrayOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.ByteArrayOutputStream
-
- com.google.api.client.util.LoggingByteArrayOutputStream
-
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
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. Onclose()
, 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.- Since:
- 1.9
- Author:
- Yaniv Inbar
-
-
Field Summary
-
Fields inherited from class java.io.ByteArrayOutputStream
buf, count
-
-
Constructor Summary
Constructors Constructor Description LoggingByteArrayOutputStream(Logger logger, Level loggingLevel, int maximumBytesToLog)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
int
getBytesWritten()
Returns the bytes written to the stream (may or may not have been logged).int
getMaximumBytesToLog()
Returns the maximum number of bytes to log (may be0
to avoid logging content).void
write(byte[] b, int off, int len)
void
write(int b)
-
Methods inherited from class java.io.ByteArrayOutputStream
reset, size, toByteArray, toString, toString, toString, writeTo
-
Methods inherited from class java.io.OutputStream
flush, write
-
-
-
-
Method Detail
-
write
public void write(int b)
- Overrides:
write
in classByteArrayOutputStream
-
write
public void write(byte[] b, int off, int len)
- Overrides:
write
in classByteArrayOutputStream
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classByteArrayOutputStream
- Throws:
IOException
-
getMaximumBytesToLog
public final int getMaximumBytesToLog()
Returns the maximum number of bytes to log (may be0
to avoid logging content).
-
getBytesWritten
public final int getBytesWritten()
Returns the bytes written to the stream (may or may not have been logged).
-
-