int bees_log_level = 8;
+/// Default level for exception stacktraces at startup.
+/// Will be lowered to LOG_DEBUG once startup is complete.
+int bees_trace_level = LOG_ERR;
+
thread_local BeesTracer *BeesTracer::tl_next_tracer = nullptr;
thread_local bool BeesTracer::tl_first = true;
thread_local bool BeesTracer::tl_silent = false;
{
if (!tl_silent && exception_check()) {
if (tl_first) {
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: --- BEGIN TRACE --- exception ---");
+ BEESLOG(bees_trace_level, "TRACE: --- BEGIN TRACE --- exception ---");
tl_first = false;
}
try {
m_func();
} catch (exception &e) {
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: Nested exception: " << e.what());
+ BEESLOG(bees_trace_level, "TRACE: Nested exception: " << e.what());
} catch (...) {
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: Nested exception ...");
+ BEESLOG(bees_trace_level, "TRACE: Nested exception ...");
}
if (!m_next_tracer) {
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: --- END TRACE --- exception ---");
+ BEESLOG(bees_trace_level, "TRACE: --- END TRACE --- exception ---");
}
}
tl_next_tracer = m_next_tracer;
BeesTracer::trace_now()
{
BeesTracer *tp = tl_next_tracer;
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: --- BEGIN TRACE ---");
+ BEESLOG(bees_trace_level, "TRACE: --- BEGIN TRACE ---");
while (tp) {
tp->m_func();
tp = tp->m_next_tracer;
}
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: --- END TRACE ---");
+ BEESLOG(bees_trace_level, "TRACE: --- END TRACE ---");
}
bool
BEESLOGDEBUG("exception (ignored): " << s);
BEESCOUNT(exception_caught_silent);
} else {
- BEESLOG(BEES_TRACE_LEVEL, "TRACE: EXCEPTION: " << s);
+ BEESLOG(bees_trace_level, "TRACE: EXCEPTION: " << s);
BEESCOUNT(exception_caught);
}
});
#define BEESLOG(lv,x) do { if (lv < bees_log_level) { Chatter __chatter(lv, BeesNote::get_name()); __chatter << x; } } while (0)
-#define BEES_TRACE_LEVEL LOG_DEBUG
-#define BEESTRACE(x) BeesTracer SRSLY_WTF_C(beesTracer_, __LINE__) ([&]() { BEESLOG(BEES_TRACE_LEVEL, "TRACE: " << x << " at " << __FILE__ << ":" << __LINE__); })
+extern int bees_trace_level;
+#define BEESTRACE(x) BeesTracer SRSLY_WTF_C(beesTracer_, __LINE__) ([&]() { BEESLOG(bees_trace_level, "TRACE: " << x << " at " << __FILE__ << ":" << __LINE__); })
#define BEESTOOLONG(x) BeesTooLong SRSLY_WTF_C(beesTooLong_, __LINE__) ([&](ostream &_btl_os) { _btl_os << x; })
#define BEESNOTE(x) BeesNote SRSLY_WTF_C(beesNote_, __LINE__) ([&](ostream &_btl_os) { _btl_os << x; })