11thread_local size_t g_EntryLevel = 0;
 
   23    static bool first = 
true;
 
   26        static constinit std::atomic_flag lock = ATOMIC_FLAG_INIT;
 
   35                    "********** LOGS BEGUN **********\n";
 
   37                    "********** LOGS BEGUN ********** (Debug)\n";
 
   39                    "********** LOGS BEGUN ********** (Release)\n";
 
 
   49    constexpr static const char FEWIV[] = 
"FEWIDV";
 
   50    static_assert(FEWIV[
LL_FATAL]   == 
'F');
 
   51    static_assert(FEWIV[
LL_ERROR]   == 
'E');
 
   53    static_assert(FEWIV[
LL_INFO]    == 
'I');
 
   54    static_assert(FEWIV[
LL_DEBUG]   == 
'D');
 
   56    if (
auto pout = u.
stream())
 
   58        logTrace(*pout, u.
timezone()) <<std::format(
"{}:{}", FEWIV[level], std::string(g_EntryLevel,
'|'));
 
 
   84                if (
auto n = std::uncaught_exceptions())
 
   85                    return std::format(
"@}} due to {} uncaught exception{}\n", n, (n > 1 ? 
"s" : 
""));
 
   87                return std::string{
"@}\n"};
 
 
   92void C_EntryLog::deeper()
 
   97int C_EntryLog::getId()
 
   99    static std::atomic<int> id(1);
 
#define RUNTIME_ERROR(fmtStr,...)
Wrap FILE(DATE)#__LINE__ FUNCTION: msg into std::runtime_error.
C_EntryLog(std::string_view scopeName)
</// Thread safety is expected
THE common namespace of bux library.
@ LL_DEBUG
Debug only logs which can be suppressed easily for releases.
@ LL_WARNING
Situation that should be warned but should not have sabotaged anything already.
@ LL_ERROR
Error not serious enough that the program can continue to run.
@ LL_INFO
Information worth mentioning about the current status, be it normal or abnormal.
@ LL_VERBOSE
More detailed or advanced information probably considered too much by some.
@ LL_FATAL
Error serious enough that the program should shut down immediately after reporting this.
std::ostream & logTrace(std::ostream &out, T_LocalZone tz)
std::ostream & stamp(const C_UseLog &u, E_LogLevel level)