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)