Package com.jalios.jcms.logging
Class Log4jOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- com.jalios.jcms.logging.Log4jOutputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable
public class Log4jOutputStream extends java.io.OutputStreamAn OutputStream that flushes out to a log4j Category.Note that no data is written out to the Category until the stream is flushed or closed.
Example:// make sure everything sent to System.err is logged System.setErr(new PrintStream(new Log4jOutputStream(Category.getRoot(), Priority.WARN), true)); // make sure everything sent to System.out is also logged System.setOut(new PrintStream(new Log4jOutputStream(Category.getRoot(), Priority.INFO), true));
- Author:
- Jim Moore
- See Also:
Category
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]bufThe internal buffer where data is stored.protected intcountThe number of valid bytes in the buffer.static intDEFAULT_BUFFER_LENGTHThe default number of bytes in the buffer.protected booleanhasBeenClosedUsed to maintain the contract of #close()}.protected org.apache.log4j.LevellevelThe priority to use when writing to the Category.protected org.apache.log4j.LoggerloggerThe category to write to.
-
Constructor Summary
Constructors Constructor Description Log4jOutputStream(org.apache.log4j.Logger log, org.apache.log4j.Level level)Creates the Log4jOutputStream to flush to the given Category.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes this output stream and releases any system resources associated with this stream.voidflush()Flushes this output stream and forces any buffered output bytes to be written out.voidwrite(int b)Writes the specified byte to this output stream.
-
-
-
Field Detail
-
hasBeenClosed
protected boolean hasBeenClosed
Used to maintain the contract of #close()}.
-
buf
protected byte[] buf
The internal buffer where data is stored.
-
count
protected int count
The number of valid bytes in the buffer. This value is always in the range0throughbuf.length; elementsbuf[0]throughbuf[count-1]contain valid byte data.
-
DEFAULT_BUFFER_LENGTH
public static final int DEFAULT_BUFFER_LENGTH
The default number of bytes in the buffer. =2048- See Also:
- Constant Field Values
-
logger
protected org.apache.log4j.Logger logger
The category to write to.
-
level
protected org.apache.log4j.Level level
The priority to use when writing to the Category.
-
-
Constructor Detail
-
Log4jOutputStream
public Log4jOutputStream(org.apache.log4j.Logger log, org.apache.log4j.Level level) throws java.lang.IllegalArgumentExceptionCreates the Log4jOutputStream to flush to the given Category.- Parameters:
log- the Logger to write tolevel- the Level to use when writing to the Logger- Throws:
java.lang.IllegalArgumentException- if cat == null or priority == null
-
-
Method Detail
-
close
public void close()
Closes this output stream and releases any system resources associated with this stream. The general contract ofcloseis that it closes the output stream. A closed stream cannot perform output operations and cannot be reopened.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.OutputStream
-
write
public void write(int b) throws java.io.IOExceptionWrites the specified byte to this output stream. The general contract forwriteis that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argumentb. The 24 high-order bits ofbare ignored.- Specified by:
writein classjava.io.OutputStream- Parameters:
b- thebyteto write- Throws:
java.io.IOException- if an I/O error occurs. In particular, anIOExceptionmay be thrown if the output stream has been closed.
-
flush
public void flush()
Flushes this output stream and forces any buffered output bytes to be written out. The general contract offlushis that calling it is an indication that, if any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination.- Specified by:
flushin interfacejava.io.Flushable- Overrides:
flushin classjava.io.OutputStream
-
-