Class AbstractConsoleLogger<T>

java.lang.Object
org.refcodes.logger.alt.console.AbstractConsoleLogger<T>
Type Parameters:
T - The type of the Record instances managed by the Logger.
All Implemented Interfaces:
org.refcodes.component.Destroyable, org.refcodes.logger.LogDecorator, org.refcodes.logger.Logger<T>, org.refcodes.mixin.ErrorPrintStreamAccessor, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamBuilder<AbstractConsoleLogger<T>>, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamMutator, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamProperty, org.refcodes.mixin.RowWidthAccessor, org.refcodes.mixin.RowWidthAccessor.RowWidthBuilder<AbstractConsoleLogger<?>>, org.refcodes.mixin.RowWidthAccessor.RowWidthMutator, org.refcodes.mixin.RowWidthAccessor.RowWidthProperty, org.refcodes.mixin.StandardPrintStreamAccessor, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamBuilder<AbstractConsoleLogger<T>>, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamMutator, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamProperty, org.refcodes.textual.TableStyleAccessor, org.refcodes.textual.TableStyleAccessor.TableStyleBuilder<AbstractConsoleLogger<?>>, org.refcodes.textual.TableStyleAccessor.TableStyleMutator, org.refcodes.textual.TableStyleAccessor.TableStyleProperty
Direct Known Subclasses:
ConsoleLogger

public abstract class AbstractConsoleLogger<T> extends Object implements org.refcodes.component.Destroyable, org.refcodes.logger.Logger<T>, org.refcodes.mixin.RowWidthAccessor.RowWidthProperty, org.refcodes.mixin.RowWidthAccessor.RowWidthBuilder<AbstractConsoleLogger<?>>, org.refcodes.textual.TableStyleAccessor.TableStyleProperty, org.refcodes.textual.TableStyleAccessor.TableStyleBuilder<AbstractConsoleLogger<?>>, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamProperty, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamBuilder<AbstractConsoleLogger<T>>, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamProperty, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamBuilder<AbstractConsoleLogger<T>>
The AbstractConsoleLogger implements the Logger interface for providing logging functionality with extended pimped console output (via System.out and (via sub-classing also System.err).

The AbstractConsoleLogger by default uses the most promising width in characters of the system's terminal in use by calling the method SystemUtility.toPreferredTerminalWidth(). In case you pass a "-Dconsole.width=n" JVM argument, then your width is taken, else the actual console's width is being tried to be determined. See SystemProperty.CONSOLE_WIDTH. You can also use the setRowWidth(int) or withRowWidth(int) method in order to programmatically set the console's row width.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    The Enum OutputPrintStream.

    Nested classes/interfaces inherited from interface org.refcodes.component.Destroyable

    org.refcodes.component.Destroyable.DestroyAutomaton

    Nested classes/interfaces inherited from interface org.refcodes.mixin.ErrorPrintStreamAccessor

    org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamBuilder<B extends org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamBuilder<?>>, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamMutator, org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamProperty

    Nested classes/interfaces inherited from interface org.refcodes.mixin.RowWidthAccessor

    org.refcodes.mixin.RowWidthAccessor.RowWidthBuilder<B extends org.refcodes.mixin.RowWidthAccessor.RowWidthBuilder<?>>, org.refcodes.mixin.RowWidthAccessor.RowWidthMutator, org.refcodes.mixin.RowWidthAccessor.RowWidthProperty

    Nested classes/interfaces inherited from interface org.refcodes.mixin.StandardPrintStreamAccessor

    org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamBuilder<B extends org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamBuilder<?>>, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamMutator, org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamProperty

    Nested classes/interfaces inherited from interface org.refcodes.textual.TableStyleAccessor

    org.refcodes.textual.TableStyleAccessor.TableStyleBuilder<B extends org.refcodes.textual.TableStyleAccessor.TableStyleBuilder<?>>, org.refcodes.textual.TableStyleAccessor.TableStyleMutator, org.refcodes.textual.TableStyleAccessor.TableStyleProperty
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected PrintStream
     
    protected boolean
     
    protected boolean
     
    protected boolean
     
    protected org.refcodes.tabular.FormattedHeader<T>
     
    protected boolean
     
    protected boolean
     
    protected int
     
    protected PrintStream
     
    protected org.refcodes.textual.TableBuilder
     
    protected org.refcodes.textual.TableStyle
     
    protected String
    The default ANSI Escape-Sequence for the logger's box grid to be used when ANSI Escape-Codes are enabled.
  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractConsoleLogger(org.refcodes.tabular.FormattedHeader<T> aHeader)
    Initially enables or disables ANSI escape sequences as of detection of terminal's ANSI support.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    int
    org.refcodes.textual.TableStyle
    boolean
    Checks for escape codes.
    boolean
    Checks for left border.
    boolean
    Checks for right border.
    protected void
    Inits the logger.
    void
    log(org.refcodes.tabular.Record<? extends T> aRecord)
    protected void
    log(org.refcodes.tabular.Record<? extends T> aRecord, org.refcodes.tabular.FormattedHeader<T> aHeader, org.refcodes.textual.TableBuilder aTableBuilder)
    Prints out a log-line with regard to the provided Header unsing the provided TableBuilder.
    void
    void
    void
    void
    void
    setEscapeCodes(boolean isEscCodesEnabled)
    Sets the escape codes.
    void
    setLeftBorder(boolean hasLeftBorder)
    Sets the left border.
    void
    setLoggerStyle(String aTableStyleName)
    As the underlying configuration framework used by the RuntimeLoggerSingleton cannot convert a String to an enum, we got to provide such a method ourselves.
    void
    setRightBorder(boolean hasRightBorder)
    Sets the right border.
    void
    setRowWidth(int aRowWidth)
    void
    void
    setStyle(String aTableStyle)
    Convenience method for setLoggerStyle(String): As the underlying configuration framework used by the RuntimeLoggerSingleton cannot convert a String to an enum, we got to provide such a method ourselves.
    void
    setTableStyle(org.refcodes.textual.TableStyle aTableStyle)
    protected org.refcodes.textual.TableBuilder
    toPreConfiguredTableBuilder(org.refcodes.tabular.FormattedHeader<?> aHeader, AbstractConsoleLogger.OutputPrintStream aOutputPrintStream)
    Creates a pre-configured TableBuilder, can be used by sub-classes in case them require additional TableBuilder instances.
    withErrorPrintStream(PrintStream aErrorPrintStream)
    withEscapeCodes(boolean isEscCodesEnabled)
    With escape codes.
    withLeftBorder(boolean hasLeftBorder)
    With left border.
    withRightBorder(boolean hasRightBorder)
    With right border.
    withRowWidth(int aRowWidth)
    withStandardPrintStream(PrintStream aStandardPrintStream)
    withTableStyle(org.refcodes.textual.TableStyle aTableStyle)

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamProperty

    letErrorPrintStream

    Methods inherited from interface org.refcodes.mixin.RowWidthAccessor.RowWidthProperty

    letRowWidth

    Methods inherited from interface org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamProperty

    letStandardPrintStream

    Methods inherited from interface org.refcodes.textual.TableStyleAccessor.TableStyleProperty

    letTableStyle
  • Field Details

    • DEFAULT_ANSI_BOX_GRID_COLOR

      protected String DEFAULT_ANSI_BOX_GRID_COLOR
      The default ANSI Escape-Sequence for the logger's box grid to be used when ANSI Escape-Codes are enabled.
    • _isPrintHead

      protected boolean _isPrintHead
    • _isPrintSeparator

      protected boolean _isPrintSeparator
    • _hasLogLines

      protected boolean _hasLogLines
    • _header

      protected org.refcodes.tabular.FormattedHeader<T> _header
    • _tableBuilder

      protected org.refcodes.textual.TableBuilder _tableBuilder
    • _stdStream

      protected PrintStream _stdStream
    • _errStream

      protected PrintStream _errStream
    • _rowWidth

      protected int _rowWidth
    • _tableStyle

      protected org.refcodes.textual.TableStyle _tableStyle
    • _hasLeftBorder

      protected boolean _hasLeftBorder
    • _hasRightBorder

      protected boolean _hasRightBorder
  • Constructor Details

    • AbstractConsoleLogger

      public AbstractConsoleLogger(org.refcodes.tabular.FormattedHeader<T> aHeader)
      Initially enables or disables ANSI escape sequences as of detection of terminal's ANSI support. You can overrule this setting by calling setEscapeCodes(boolean). See also SystemUtility.isAnsiTerminal().
      Parameters:
      aHeader - the header
  • Method Details

    • log

      public void log(org.refcodes.tabular.Record<? extends T> aRecord) throws org.refcodes.logger.IllegalRecordRuntimeException, org.refcodes.logger.UnexpectedLogRuntimeException
      Specified by:
      log in interface org.refcodes.logger.Logger<T>
      Throws:
      org.refcodes.logger.IllegalRecordRuntimeException
      org.refcodes.logger.UnexpectedLogRuntimeException
    • getStandardPrintStream

      public PrintStream getStandardPrintStream()
      Specified by:
      getStandardPrintStream in interface org.refcodes.mixin.StandardPrintStreamAccessor
    • setStandardPrintStream

      public void setStandardPrintStream(PrintStream aOutStream)
      Specified by:
      setStandardPrintStream in interface org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamMutator
    • getErrorPrintStream

      public PrintStream getErrorPrintStream()
      Specified by:
      getErrorPrintStream in interface org.refcodes.mixin.ErrorPrintStreamAccessor
    • setErrorPrintStream

      public void setErrorPrintStream(PrintStream aErrStream)
      Specified by:
      setErrorPrintStream in interface org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamMutator
    • setStyle

      public void setStyle(String aTableStyle)
      Convenience method for setLoggerStyle(String): As the underlying configuration framework used by the RuntimeLoggerSingleton cannot convert a String to an enum, we got to provide such a method ourselves. When configuring programmatically use setTableStyle(TableStyle), when using the "runtimelogger-config.xml" use the property "loggerStyle" for this method to be invoked. Valid arguments are as of the TableStyle enumeration:
      • SINGLE_HEADER_SINGLE_BODY
      • DOUBLE_SINGLE_HEADER_SINGLE_BODY
      • DOUBLE_HEADER_DOUBLE_BODY
      • DOUBLE_SINGLE_HEADER_DOUBLE_SINGLE_BODY
      • DOUBLE_HEADER_SINGLE_BODY
      • DOUBLE_HEADER_DOUBLE_SINGLE_BODY
      • DOUBLE_SINGLE_HEADER_SINGLE_DASHED_BODY
      • ASCII_HEADER_ASCII_BODY
      • BLANK_HEADER_BLANK_BODY
      • SINGLE_BLANK_HEADER_SINGLE_BLANK_BODY
      • ASCII_BLANK_HEADER_ASCII_BLANK_BODY
      Parameters:
      aTableStyle - The style to use for the logger.
    • getTableStyle

      public org.refcodes.textual.TableStyle getTableStyle()
      Specified by:
      getTableStyle in interface org.refcodes.textual.TableStyleAccessor
    • setTableStyle

      public void setTableStyle(org.refcodes.textual.TableStyle aTableStyle)
      Specified by:
      setTableStyle in interface org.refcodes.textual.TableStyleAccessor.TableStyleMutator
    • setLoggerStyle

      public void setLoggerStyle(String aTableStyleName)
      As the underlying configuration framework used by the RuntimeLoggerSingleton cannot convert a String to an enum, we got to provide such a method ourselves. When configuring programmatically use setTableStyle(TableStyle), when using the "runtimelogger-config.xml" use the property "loggerStyle" for this method to be invoked. Valid arguments are as of the TableStyle enumeration:
      • SINGLE_HEADER_SINGLE_BODY
      • DOUBLE_SINGLE_HEADER_SINGLE_BODY
      • DOUBLE_HEADER_DOUBLE_BODY
      • DOUBLE_SINGLE_HEADER_DOUBLE_SINGLE_BODY
      • DOUBLE_HEADER_SINGLE_BODY
      • DOUBLE_HEADER_DOUBLE_SINGLE_BODY
      • DOUBLE_SINGLE_HEADER_SINGLE_DASHED_BODY
      • ASCII_HEADER_ASCII_BODY
      • BLANK_HEADER_BLANK_BODY
      • SINGLE_BLANK_HEADER_SINGLE_BLANK_BODY
      • ASCII_BLANK_HEADER_ASCII_BLANK_BODY
      Parameters:
      aTableStyleName - The style to use for the logger.
    • setEscapeCodes

      public void setEscapeCodes(boolean isEscCodesEnabled)
      Sets the escape codes.
      Parameters:
      isEscCodesEnabled - the new escape codes
    • hasLeftBorder

      public boolean hasLeftBorder()
      Checks for left border.
      Returns:
      true, if successful
    • setLeftBorder

      public void setLeftBorder(boolean hasLeftBorder)
      Sets the left border.
      Parameters:
      hasLeftBorder - the new left border
    • withLeftBorder

      public AbstractConsoleLogger<T> withLeftBorder(boolean hasLeftBorder)
      With left border.
      Parameters:
      hasLeftBorder - the has left border
      Returns:
      the formatted logger
    • hasRightBorder

      public boolean hasRightBorder()
      Checks for right border.
      Returns:
      true, if successful
    • setRightBorder

      public void setRightBorder(boolean hasRightBorder)
      Sets the right border.
      Parameters:
      hasRightBorder - the new right border
    • withRightBorder

      public AbstractConsoleLogger<T> withRightBorder(boolean hasRightBorder)
      With right border.
      Parameters:
      hasRightBorder - the has right border
      Returns:
      the formatted logger
    • withErrorPrintStream

      public AbstractConsoleLogger<T> withErrorPrintStream(PrintStream aErrorPrintStream)
      Specified by:
      withErrorPrintStream in interface org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamBuilder<T>
    • withStandardPrintStream

      public AbstractConsoleLogger<T> withStandardPrintStream(PrintStream aStandardPrintStream)
      Specified by:
      withStandardPrintStream in interface org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamBuilder<T>
    • withTableStyle

      public AbstractConsoleLogger<?> withTableStyle(org.refcodes.textual.TableStyle aTableStyle)
      Specified by:
      withTableStyle in interface org.refcodes.textual.TableStyleAccessor.TableStyleBuilder<T>
    • withRowWidth

      public AbstractConsoleLogger<?> withRowWidth(int aRowWidth)
      Specified by:
      withRowWidth in interface org.refcodes.mixin.RowWidthAccessor.RowWidthBuilder<T>
    • getRowWidth

      public int getRowWidth()
      Specified by:
      getRowWidth in interface org.refcodes.mixin.RowWidthAccessor
    • setRowWidth

      public void setRowWidth(int aRowWidth)
      Specified by:
      setRowWidth in interface org.refcodes.mixin.RowWidthAccessor.RowWidthMutator
    • hasEscapeCodes

      public boolean hasEscapeCodes()
      Checks for escape codes.
      Returns:
      true, if successful
    • withEscapeCodes

      public AbstractConsoleLogger<T> withEscapeCodes(boolean isEscCodesEnabled)
      With escape codes.
      Parameters:
      isEscCodesEnabled - the is esc codes enabled
      Returns:
      the formatted logger
    • destroy

      public void destroy()
      Specified by:
      destroy in interface org.refcodes.component.Destroyable
    • init

      protected void init()
      Inits the logger.
    • printSeparator

      public void printSeparator()
      Specified by:
      printSeparator in interface org.refcodes.logger.LogDecorator
    • printTail

      public void printTail()
      Specified by:
      printTail in interface org.refcodes.logger.LogDecorator
    • printHead

      public void printHead()
      Specified by:
      printHead in interface org.refcodes.logger.LogDecorator
    • toPreConfiguredTableBuilder

      protected org.refcodes.textual.TableBuilder toPreConfiguredTableBuilder(org.refcodes.tabular.FormattedHeader<?> aHeader, AbstractConsoleLogger.OutputPrintStream aOutputPrintStream)
      Creates a pre-configured TableBuilder, can be used by sub-classes in case them require additional TableBuilder instances.
      Parameters:
      aHeader - the header
      aOutputPrintStream - the output print stream
      Returns:
      A pre-configured TableBuilder (as of the attributes state of the AbstractConsoleLogger).
    • log

      protected void log(org.refcodes.tabular.Record<? extends T> aRecord, org.refcodes.tabular.FormattedHeader<T> aHeader, org.refcodes.textual.TableBuilder aTableBuilder)
      Prints out a log-line with regard to the provided Header unsing the provided TableBuilder.
      Parameters:
      aRecord - The record to log.
      aHeader - The Header with which to determine the visibility of the Record's elements.
      aTableBuilder - The TableBuilder to use for printing.
      Throws:
      ClassCastException - the class cast exception