10#if !defined (HPP_ALOX_LOGTOOLS)
14#if !defined (HPP_ALIB_LANG_FORMAT_FORMATTER)
18#if !defined (HPP_ALIB_STRINGS_UTIL_TOKENIZER)
23namespace alib {
namespace lox {
44 if( logPrefix .IsNotNull() ) lox.
SetPrefix( logPrefix , Scope::ThreadOuter );
45 for (
auto& entry : e )
47 formatter->FormatArgs( buf.
Reset(), entry );
49 lox.
Acquire( entry.File, entry.Line, entry.Function );
51 tknzr.
Set( buf,
'\n' );
57 logables.
Add(
"{}{}: {!Q[]}", (entry.Type.Integral() >= 0 ?
'E' :
'I'),
58 entryNo, entry.Type );
60 logables.
Add(
" {}" , tknzr.
Next() );
62 lox.
Entry(
"", verbosity );
69 if( logPrefix .IsNotNull() ) lox.
SetPrefix(
nullptr, Scope::ThreadOuter );
74 lox.
Error(
"Format exception caught while creating formatted output of another exception!\n"
75 "Format exception information follows:\n" );
ALIB_API AString & Format(AString &target) const
void Error(BoxedObjects &&... logables)
void Entry(const NString &domain, Verbosity verbosity)
void SetPrefix(const Box &prefix, Scope scope)
void SetDomain(const NString &scopeDomain, Scope scope)
Boxes & GetLogableContainer()
void Acquire(const NCString &file, int line, const NCString &func)
void DbgDisableBufferReplacementWarning()
constexpr bool IsNotNull() const
TLocalString< TChar, 8 > TrimChars
ALIB_API TSubstring< TChar > & Next(lang::Whitespaces trimming=lang::Whitespaces::Trim, TChar newDelim='\0')
void Set(const TString< TChar > &src, TChar delimiter, bool skipEmptyTokens=false)
#define ALIB_CALLER_NULLED
#define ALIB_CALLER_PRUNED
std::shared_ptr< lang::format::Formatter > SPFormatter