Class LoggerAwareOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    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:$
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.io.ByteArrayOutputStream bos
      Message buffer
      protected Logger m_logger
      Logger reference
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      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

        nullOutputStream, write, write
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • bos

        private final java.io.ByteArrayOutputStream bos
        Message buffer
      • m_logger

        protected final Logger m_logger
        Logger reference
    • Constructor Detail

      • LoggerAwareOutputStream

        public LoggerAwareOutputStream​(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.lang.AutoCloseable
        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