org.apache.avalon.framework.logger
Class LoggerAwareOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by org.apache.avalon.framework.logger.LoggerAwareOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable

public abstract class LoggerAwareOutputStream
extends java.io.OutputStream

Logger aware output stream, characters written to this OutputStream are buffered until a newline character is encountered, or a flush() is called.

Extend to specify the log method that the message should be invoked. eg:

 setOutputStream( new LoggerAwareOutputStream( getLogger() ) {
     protected void logMessage( String message )
     {
         if ( m_logger.isDebugEnabled() )
         {
             m_logger.debug( message );
         }
     }
 } );
 

Since:
Nov 19, 2004 7:03:50 PM
Version:
$Revision:$
Author:
Marcus Crafter

Field Summary
protected  org.apache.avalon.framework.logger.Logger m_logger
          Logger reference
 
Constructor Summary
LoggerAwareOutputStream(org.apache.avalon.framework.logger.Logger logger)
          Constructor, creates instance of class.
 
Method Summary
 void close()
          Purposely flushes the stream, but doesn't close anything since the logger is managed by another class.
 void flush()
          Flushes this output stream, writing any buffered content to the log
protected abstract  void logMessage(java.lang.String message)
          Writes the message to the log.
 void write(int b)
          Writes a byte to the internal buffer.
 
Methods inherited from class java.io.OutputStream
write, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_logger

protected final org.apache.avalon.framework.logger.Logger m_logger
Logger reference

Constructor Detail

LoggerAwareOutputStream

public LoggerAwareOutputStream(org.apache.avalon.framework.logger.Logger logger)
Constructor, creates instance of class.

Parameters:
logger - logger this output stream should use
Method Detail

write

public void write(int b)
           throws java.io.IOException
Writes a byte to the internal buffer. If a newline character is encountered, then the buffer is sent to the logger.

Specified by:
write in class java.io.OutputStream
Parameters:
b - character to write
Throws:
java.io.IOException - if an error occurs
See Also:
OutputStream.write(int)

flush

public void flush()
           throws java.io.IOException
Flushes this output stream, writing any buffered content to the log

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.OutputStream
Throws:
java.io.IOException - on error
See Also:
OutputStream.flush()

close

public void close()
           throws java.io.IOException
Purposely flushes the stream, but doesn't close anything since the logger is managed by another class.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.OutputStream
Throws:
java.io.IOException - if an IO error occurs
See Also:
OutputStream.close()

logMessage

protected abstract void logMessage(java.lang.String message)
Writes the message to the log. Subclasses should override this method to send the message to the log level they require.

Parameters:
message - message to be written


Copyright © 1997-2010 Apache Software Foundation. All Rights Reserved.