ALib C++ Library
Library Version: 2412 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
PlainTextLogger Class Referenceabstract

Description:

A text logger that either removes or ignores (just writes through) ALox ESC sequences. Implements abstract method logText and introduces two new abstract methods logSubstring and notifyLogOp.

Definition at line 25 of file plaintextlogger.hpp.

#include <plaintextlogger.hpp>

Inheritance diagram for PlainTextLogger:
[legend]
Collaboration diagram for PlainTextLogger:
[legend]

Public Field Index:

bool PruneESCSequences = true
 
- Public Field Index: inherited from TextLogger
ObjectConverterConverter = nullptr
 
TickConverter DateConverter
 
bool FormatWarningOnce = false
 
- Public Field Index: inherited from Logger
integer CntLogs =0
 
time::Ticks TimeOfCreation
 The creation time of the Logger.
 
time::Ticks TimeOfLastLog
 Timestamp of the last log operation.
 
- Public Field Index: inherited from RecursiveLock
DbgLockAsserter Dbg
 The debug tool instance.
 

Protected Method Index:

 PlainTextLogger (const NString &name, const NString &typeName, bool pUsesStdStreams)
 
virtual ~PlainTextLogger () override
 Destructs a MemoryLogger.
 
virtual integer logSubstring (const String &buffer, integer start, integer length)=0
 
virtual ALIB_API void logText (detail::Domain &domain, Verbosity verbosity, AString &msg, detail::ScopeInfo &scope, int lineNumber) override
 
virtual bool notifyLogOp (lang::Phase phase)=0
 
- Protected Method Index: inherited from TextLogger
ALIB_API TextLogger (const NString &pName, const NString &typeName, bool pUsesStdStreams)
 
virtual void notifyMultiLineOp (lang::Phase phase)=0
 
virtual ALIB_API void processVariable (const NString &domainPath, Verbosity verbosity, detail::ScopeInfo &scope, AString &dest, Substring &variable)
 
virtual ALIB_API void writeMetaInfo (AString &buffer, detail::Domain &domain, Verbosity verbosity, detail::ScopeInfo &scope)
 
virtual ALIB_API void writeTimeDiff (AString &buffer, int64_t diffNanos)
 
- Protected Method Index: inherited from Logger
 Logger (const NString &name, const NString &typeName)
 

Additional Inherited Members

- Public Method Index: inherited from TextLogger
virtual ALIB_API ~TextLogger () override
 Destructs a TextLogger.
 
virtual ALIB_API void AcknowledgeLox (detail::LoxImpl *lox, lang::ContainerOp op) override
 
virtual ALIB_API void ClearReplacements ()
 Removes all pairs of searched strings and their replacement value.
 
FormatAutoSizesGetAutoSizes ()
 
FormatDateTimeGetFormatDate ()
 
FormatMetaInfoGetFormatMetaInfo ()
 
FormatMultiLineGetFormatMultiLine ()
 
FormatOtherGetFormatOther ()
 
FormatTimeDiffGetFormatTimeDiff ()
 
ReplacementsGetReplacements ()
 
virtual ALIB_API void Log (detail::Domain &domain, Verbosity verbosity, BoxesMA &logables, detail::ScopeInfo &scope) override
 
virtual ALIB_API void ResetAutoSizes ()
 
virtual ALIB_API void SetReplacement (const String &searched, const String &replacement)
 
- Public Method Index: inherited from Logger
virtual ~Logger () override
 Destructs a logger.
 
const NStringGetName () const
 
const NStringGetTypeName () const
 
- Public Method Index: inherited from RecursiveLock
 ~RecursiveLock () override
 Destructor. With debug-compilations, asserts that this lock is not acquired.
 
ALIB_API void AcquireRecursive (ALIB_DBG_TAKE_CI)
 
virtual ALIB_API bool DCSIsAcquired () const override
 
virtual ALIB_API bool DCSIsSharedAcquired () const override
 
ALIB_API void ReleaseRecursive (ALIB_DBG_TAKE_CI)
 
ALIB_API bool TryAcquire (ALIB_DBG_TAKE_CI)
 
- Public Method Index: inherited from DbgCriticalSections::AssociatedLock
virtual ~AssociatedLock ()
 Virtual Destructor.
 
- Protected Field Index: inherited from TextLogger
lang::system::CalendarDateTime callerDateTime
 
AString logBuf
 The internal log Buffer.
 
AString msgBuf
 The buffers for converting the logables.
 
bool usesStdStreams
 
Variable varFormatAutoSizes
 
Variable varFormatDateTime
 
Variable varFormatMetaInfo
 
Variable varFormatMultiLine
 
Variable varFormatOther
 
Variable varFormatTimeDiff
 
Variable varReplacements
 
- Protected Field Index: inherited from Logger
NString32 Name
 
NString32 TypeName
 
- Protected Field Index: inherited from RecursiveLock
std::recursive_mutex mutex
 

Field Details:

◆ PruneESCSequences

bool PruneESCSequences = true

If this field is set to true (the default), all ESC color and style codes get removed when logging into this Logger. ESC::TAB is processed.

It might be useful, to set this to false, e.g., in the case, the contents of the Logger is (later) written into a different logger (e.g., as a multi line message) which is capable of interpreting the escape sequences of class ESC.

Definition at line 37 of file plaintextlogger.hpp.

Constructor(s) / Destructor Details:

◆ PlainTextLogger()

PlainTextLogger ( const NString & name,
const NString & typeName,
bool pUsesStdStreams )
inlineexplicitprotected

Creates a PlainTextLogger

Parameters
nameThe name of the Logger. If empty, it defaults to the type name.
typeNameThe type of the Logger.
pUsesStdStreamsDenotes whether this logger writes to the standard output streams.

Definition at line 50 of file plaintextlogger.hpp.

◆ ~PlainTextLogger()

virtual ~PlainTextLogger ( )
inlineoverrideprotectedvirtual

Destructs a MemoryLogger.

Definition at line 57 of file plaintextlogger.hpp.

Method Details:

◆ logSubstring()

virtual integer logSubstring ( const String & buffer,
integer start,
integer length )
protectedpure virtual

Abstract method to be implemented by descendants. Has to write the given region of the given string to the destination. Has to return the number of characters written, which might be different from the region length requested, e.g., in case of character set conversions.

If an error occurs, -1 can be returned to indicate that the current log should be aborted. In this case, no invocation of notifyLogOp(Phase::End) will be performed.

Parameters
bufferThe string to write a portion of.
startThe start of the portion in buffer to write out.
lengthThe length of the portion in buffer to write out.
Returns
The number of characters written, -1 on error.

Implemented in ConsoleLogger, MemoryLogger, TextFileLogger, and VStudioLogger.

◆ logText()

void logText ( detail::Domain & domain,
Verbosity verbosity,
AString & msg,
detail::ScopeInfo & scope,
int lineNumber )
overrideprotectedvirtual

The implementation of the abstract method of parent class TextLogger. Loops over the log text, removes or ignores ESC sequences (all but ESC.TAB) and invokes abstract methods of descendants as follows:

Parameters
domainThe Log Domain.
verbosityThe verbosity. This has been checked to be active already on this stage and is provided to be able to be logged out only.
msgThe log message.
scopeInformation about the scope of the Log Statement..
lineNumberThe line number of a multi-line message, starting with 0. For single line messages this is -1.

Implements TextLogger.

Definition at line 22 of file plaintextlogger.cpp.

Here is the call graph for this function:

◆ notifyLogOp()

virtual bool notifyLogOp ( lang::Phase phase)
protectedpure virtual

Abstract method to be implemented by descendants. This method is called when a new log message is started. It is called exactly once before a series of logSubstring() calls and exactly once after such series. If either the start or one of the calls to logSubstring returns false, the second invocation that would indicate the end of a log message is omitted.

Implementing this method allows the acquisition of system resources (e.g., opening a file).

Parameters
phaseIndicates the beginning or end of a log line.
Returns
If false is returned, the log line is aborted without an invocation of notifyLogOp(Phase::End).

Implemented in ConsoleLogger, MemoryLogger, TextFileLogger, and VStudioLogger.


The documentation for this class was generated from the following files: