ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
No Matches
PlainTextLogger Class Referenceabstract


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 27 of file plaintextlogger.hpp.

#include <plaintextlogger.hpp>

Inheritance diagram for PlainTextLogger:
Collaboration diagram for PlainTextLogger:

Public Field Index:

bool PruneESCSequences = true
- Public Field Index: inherited from TextLogger
strings::util::AutoSizes AutoSizes
ObjectConverterConverter = nullptr
String16 FmtMsgSuffix
String64 FmtMultiLineMsgHeadline = A_CHAR("ALox: Multi line message follows: ")
String16 FmtMultiLinePrefix = A_CHAR(">> ")
String16 FmtMultiLineSuffix = A_CHAR("")
AString MultiLineDelimiter
String16 MultiLineDelimiterRepl = A_CHAR("\\r")
int MultiLineMsgMode =2
- Public Field Index: inherited from Logger
integer CntLogs =0
time::Ticks TimeOfCreation
time::Ticks TimeOfLastLog
- Public Field Index: inherited from ThreadLock
NCString DbgOwnerFile =nullptr
NCString DbgOwnerFunc =nullptr
int DbgOwnerLine
uint16_t DbgRecursionWarningThreshold =10
integer DbgWarningAfterWaitTimeInMillis =2000L

Additional Inherited Members

- Public Type Index: inherited from TextLogger
enum class  LightColorUsage { Auto , Never , Foreground , Background }
- Public Static Field Index: inherited from SmartLock
static ALIB_API SmartLock StdOutputStreams
- Public Method Index: inherited from TextLogger
virtual ALIB_API ~TextLogger () override
virtual ALIB_API void AcknowledgeLox (LoxImpl *lox, lang::ContainerOp op) override
virtual ALIB_API void ClearReplacements ()
virtual ALIB_API void Log (Domain &domain, Verbosity verbosity, Boxes &logables, 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 ()
const NStringGetName () const
const NStringGetTypeName () const
- Public Method Index: inherited from SmartLock
 SmartLock ()
void Acquire (const NCString &dbgFile, int dbgLine, const NCString &dbgFunc)
ALIB_API int AddAcquirer (ThreadLock *newAcquirer)
ALIB_API int CntAcquirers ()
ALIB_API void Release ()
ALIB_API int RemoveAcquirer (ThreadLock *acquirer)
- Public Method Index: inherited from ThreadLock
ALIB_API ThreadLock (lang::Safeness safeness=lang::Safeness::Safe)
ALIB_API ~ThreadLock ()
ALIB_API void Acquire (const NCString &dbgFile, int dbgLine, const NCString &dbgFunc)
int CountAcquirements () const
ThreadGetOwner () const
lang::Safeness GetSafeness () const
bool IsOwnedByCurrentThread () const
ALIB_API void Release ()
ALIB_API void SetSafeness (lang::Safeness safeness)
bool WillRelease () const

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 41 of file plaintextlogger.hpp.

Constructor(s) / Destructor Details::

◆ PlainTextLogger()

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

Creates a PlainTextLogger

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 54 of file plaintextlogger.hpp.

◆ ~PlainTextLogger()

virtual ~PlainTextLogger ( )

Destructs a MemoryLogger

Definition at line 61 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.

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.
The number of characters written, -1 on error.

Implemented in VStudioLogger, ConsoleLogger, MemoryLogger, and TextFileLogger.

◆ logText()

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

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:

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 35 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).

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

Implemented in VStudioLogger, ConsoleLogger, MemoryLogger, and TextFileLogger.

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