Package org.refcodes.logger.alt.console
Class FormattedLoggerImpl<T>
- java.lang.Object
-
- org.refcodes.logger.alt.console.FormattedLoggerImpl<T>
-
- Type Parameters:
T
- The type of theRecord
instances managed by theLogger
.
- All Implemented Interfaces:
org.refcodes.component.Destroyable
,FormattedLogger<T>
,org.refcodes.logger.LogDecorator
,org.refcodes.logger.Logger<T>
,org.refcodes.mixin.ErrorPrintStreamAccessor
,org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamBuilder<T>
,org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamMutator
,org.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamProperty
,org.refcodes.mixin.RowWidthAccessor
,org.refcodes.mixin.RowWidthAccessor.RowWidthBuilder<T>
,org.refcodes.mixin.RowWidthAccessor.RowWidthMutator
,org.refcodes.mixin.RowWidthAccessor.RowWidthProperty
,org.refcodes.mixin.StandardPrintStreamAccessor
,org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamBuilder<T>
,org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamMutator
,org.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamProperty
,org.refcodes.textual.TableStyleAccessor
,org.refcodes.textual.TableStyleAccessor.TableStyleBuilder<T>
,org.refcodes.textual.TableStyleAccessor.TableStyleMutator
,org.refcodes.textual.TableStyleAccessor.TableStyleProperty
- Direct Known Subclasses:
ConsoleLoggerImpl
public class FormattedLoggerImpl<T> extends java.lang.Object implements org.refcodes.component.Destroyable, FormattedLogger<T>
TheFormattedLoggerImpl
implements theLogger
interface for providing logging functionality with extended pimped console output (viaSystem.out
and (via sub-classing alsoSystem.err
).The
FormattedLoggerImpl
by default uses the most promising width in characters of the system's terminal in use by calling the methodSystemUtility.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. SeeSystemProperty.CONSOLE_WIDTH
. You can also use thesetRowWidth(int)
orFormattedLogger.withRowWidth(int)
method in order to programmatically set the console's row width.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FormattedLoggerImpl.OutputPrintStream
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 java.io.PrintStream
_errStream
protected boolean
_hasLeftBorder
protected boolean
_hasLogLines
protected boolean
_hasRightBorder
protected org.refcodes.tabular.FormattedHeader<T>
_header
protected boolean
_isPrintHead
protected boolean
_isPrintSeparator
protected int
_rowWidth
protected java.io.PrintStream
_stdStream
protected org.refcodes.textual.TableBuilder
_tableBuilder
protected org.refcodes.textual.TableStyle
_tableStyle
protected java.lang.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.
-
Constructor Summary
Constructors Constructor Description FormattedLoggerImpl(org.refcodes.tabular.FormattedHeader<T> aHeader)
Initially enables or disables ANSI escape sequences as of detection of terminal's ANSI support.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
destroy()
java.io.PrintStream
getErrorPrintStream()
int
getRowWidth()
java.io.PrintStream
getStandardPrintStream()
org.refcodes.textual.TableStyle
getTableStyle()
boolean
hasEscapeCodes()
Checks for escape codes.boolean
hasLeftBorder()
Checks for left border.boolean
hasRightBorder()
Checks for right border.protected void
init()
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 providedHeader
unsing the providedTableBuilder
.void
printHead()
void
printSeparator()
void
printTail()
void
setErrorPrintStream(java.io.PrintStream aErrStream)
void
setEscapeCodes(boolean isEscCodesEnabled)
Sets the escape codes.void
setLeftBorder(boolean hasLeftBorder)
Sets the left border.void
setLoggerStyle(java.lang.String aTableStyleName)
As the underlying configuration framework used by theRuntimeLoggerSingleton
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
setStandardPrintStream(java.io.PrintStream aOutStream)
void
setTableStyle(org.refcodes.textual.TableStyle aTableStyle)
protected org.refcodes.textual.TableBuilder
toPreConfiguredTableBuilder(org.refcodes.tabular.FormattedHeader<?> aHeader, FormattedLoggerImpl.OutputPrintStream aOutputPrintStream)
Creates a pre-configuredTableBuilder
, can be used by sub-classes in case them require additionalTableBuilder
instances.-
Methods inherited from interface org.refcodes.logger.alt.console.FormattedLogger
withErrorPrintStream, withEscapeCodes, withLeftBorder, withRightBorder, withRowWidth, withStandardPrintStream, withTableStyle
-
-
-
-
Field Detail
-
DEFAULT_ANSI_BOX_GRID_COLOR
protected java.lang.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 java.io.PrintStream _stdStream
-
_errStream
protected java.io.PrintStream _errStream
-
_rowWidth
protected int _rowWidth
-
_tableStyle
protected org.refcodes.textual.TableStyle _tableStyle
-
_hasLeftBorder
protected boolean _hasLeftBorder
-
_hasRightBorder
protected boolean _hasRightBorder
-
-
Constructor Detail
-
FormattedLoggerImpl
public FormattedLoggerImpl(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 callingsetEscapeCodes(boolean)
. See alsoSystemUtility.isAnsiTerminal()
.- Parameters:
aHeader
- the header
-
-
Method Detail
-
log
public void log(org.refcodes.tabular.Record<? extends T> aRecord) throws org.refcodes.logger.IllegalRecordRuntimeException, org.refcodes.logger.UnexpectedLogRuntimeException
- Specified by:
log
in interfaceorg.refcodes.logger.Logger<T>
- Throws:
org.refcodes.logger.IllegalRecordRuntimeException
org.refcodes.logger.UnexpectedLogRuntimeException
-
getStandardPrintStream
public java.io.PrintStream getStandardPrintStream()
- Specified by:
getStandardPrintStream
in interfaceorg.refcodes.mixin.StandardPrintStreamAccessor
-
setStandardPrintStream
public void setStandardPrintStream(java.io.PrintStream aOutStream)
- Specified by:
setStandardPrintStream
in interfaceorg.refcodes.mixin.StandardPrintStreamAccessor.StandardPrintStreamMutator
-
getErrorPrintStream
public java.io.PrintStream getErrorPrintStream()
- Specified by:
getErrorPrintStream
in interfaceorg.refcodes.mixin.ErrorPrintStreamAccessor
-
setErrorPrintStream
public void setErrorPrintStream(java.io.PrintStream aErrStream)
- Specified by:
setErrorPrintStream
in interfaceorg.refcodes.mixin.ErrorPrintStreamAccessor.ErrorPrintStreamMutator
-
getTableStyle
public org.refcodes.textual.TableStyle getTableStyle()
- Specified by:
getTableStyle
in interfaceorg.refcodes.textual.TableStyleAccessor
-
setTableStyle
public void setTableStyle(org.refcodes.textual.TableStyle aTableStyle)
- Specified by:
setTableStyle
in interfaceorg.refcodes.textual.TableStyleAccessor.TableStyleMutator
-
setLoggerStyle
public void setLoggerStyle(java.lang.String aTableStyleName)
As the underlying configuration framework used by theRuntimeLoggerSingleton
cannot convert a String to an enum, we got to provide such a method ourselves. When configuring programmatically useTableStyleAccessor.TableStyleMutator.setTableStyle(TableStyle)
, when using the "runtimelogger-config.xml
" use the property "loggerStyle" for this method to be invoked. Valid arguments are as of theTableStyle
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
- Specified by:
setLoggerStyle
in interfaceFormattedLogger<T>
- Parameters:
aTableStyleName
- The style to use for the logger.
-
setEscapeCodes
public void setEscapeCodes(boolean isEscCodesEnabled)
Sets the escape codes.- Specified by:
setEscapeCodes
in interfaceFormattedLogger<T>
- Parameters:
isEscCodesEnabled
- the new escape codes
-
hasLeftBorder
public boolean hasLeftBorder()
Checks for left border.- Specified by:
hasLeftBorder
in interfaceFormattedLogger<T>
- Returns:
- true, if successful
-
setLeftBorder
public void setLeftBorder(boolean hasLeftBorder)
Sets the left border.- Specified by:
setLeftBorder
in interfaceFormattedLogger<T>
- Parameters:
hasLeftBorder
- the new left border
-
hasRightBorder
public boolean hasRightBorder()
Checks for right border.- Specified by:
hasRightBorder
in interfaceFormattedLogger<T>
- Returns:
- true, if successful
-
setRightBorder
public void setRightBorder(boolean hasRightBorder)
Sets the right border.- Specified by:
setRightBorder
in interfaceFormattedLogger<T>
- Parameters:
hasRightBorder
- the new right border
-
getRowWidth
public int getRowWidth()
- Specified by:
getRowWidth
in interfaceorg.refcodes.mixin.RowWidthAccessor
-
setRowWidth
public void setRowWidth(int aRowWidth)
- Specified by:
setRowWidth
in interfaceorg.refcodes.mixin.RowWidthAccessor.RowWidthMutator
-
hasEscapeCodes
public boolean hasEscapeCodes()
Checks for escape codes.- Specified by:
hasEscapeCodes
in interfaceFormattedLogger<T>
- Returns:
- true, if successful
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceorg.refcodes.component.Destroyable
-
init
protected void init()
Inits the logger.
-
printSeparator
public void printSeparator()
- Specified by:
printSeparator
in interfaceorg.refcodes.logger.LogDecorator
-
printTail
public void printTail()
- Specified by:
printTail
in interfaceorg.refcodes.logger.LogDecorator
-
printHead
public void printHead()
- Specified by:
printHead
in interfaceorg.refcodes.logger.LogDecorator
-
toPreConfiguredTableBuilder
protected org.refcodes.textual.TableBuilder toPreConfiguredTableBuilder(org.refcodes.tabular.FormattedHeader<?> aHeader, FormattedLoggerImpl.OutputPrintStream aOutputPrintStream)
Creates a pre-configuredTableBuilder
, can be used by sub-classes in case them require additionalTableBuilder
instances.- Parameters:
aHeader
- the headeraOutputPrintStream
- the output print stream- Returns:
- A pre-configured
TableBuilder
(as of the attributes state of theFormattedLoggerImpl
).
-
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 providedHeader
unsing the providedTableBuilder
.- Parameters:
aRecord
- The record to log.aHeader
- TheHeader
with which to determine the visibility of theRecord
's elements.aTableBuilder
- TheTableBuilder
to use for printing.- Throws:
java.lang.ClassCastException
- the class cast exception
-
-