8#if !defined(ALIB_C20_MODULES) || ((ALIB_C20_MODULES != 0) && (ALIB_C20_MODULES != 1))
9# error "Symbol ALIB_C20_MODULES has to be given to the compiler as either 0 or 1"
59 if( domainPrefix.
IsNotNull() )
lox.SetDomain( domainPrefix, Scope::ThreadOuter );
60 if( logPrefix .IsNotNull() )
lox.SetPrefix( logPrefix , Scope::ThreadOuter );
61 for (
auto& entry : e )
63 formatter.FormatArgs( buf.
Reset(), entry );
65 lox.Acquire( entry.CI );
67 tknzr.
Set( buf,
'\n' );
71 auto& logables=
lox.GetLogableContainer();
73 logables.Add(
"{}{}: {!Q[]}", (entry.Type.Integral() >= 0 ?
'E' :
'I'),
74 entryNo, entry.Type );
76 logables.Add(
" {}" , tknzr.
Next() );
78 lox.Entry(
"", verbosity );
84 if( domainPrefix.
IsNotNull() )
lox.SetDomain(
nullptr, Scope::ThreadOuter );
85 if( logPrefix .IsNotNull() )
lox.SetPrefix(
nullptr, Scope::ThreadOuter );
90 lox.Error(
"Format exception caught while creating formatted output of another exception!\n"
91 "Format output generated so far: ", buf );
This class acts as a container for Loggers and provides a convenient interface to logging.
void DbgDisableBufferReplacementWarning()
constexpr bool IsNotNull() const
ALIB_DLL TSubstring< TChar > & Next(lang::Whitespaces trimming=lang::Whitespaces::Trim, TChar newDelim='\0')
void Set(const TString< TChar > &src, TChar delimiter, bool skipEmptyTokens=false)
TLocalString< TChar, 8 > TrimChars
#define ALIB_CALLER_NULLED
#define ALIB_LOCK_RECURSIVE_WITH(lock)
strings::util::TTokenizer< character > Tokenizer
Type alias in namespace alib.
strings::TString< nchar > NString
Type alias in namespace alib.
format::Formatter Formatter
Type alias in namespace alib.
LocalString< 1024 > String1K
Type alias name for TLocalString<character,1024>.
exceptions::Exception Exception
Type alias in namespace alib.
strings::TString< character > String
Type alias in namespace alib.