From: Zygo Blaxell Date: Fri, 15 Aug 2025 01:32:52 +0000 (-0400) Subject: trace: variable exception back trace log level X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33450c2dfcb1162b75555fda4ce2173bd71180a6;p=bees trace: variable exception back trace log level During startup, if there's a failure, the full exception backtrace is quite useful, even critical. After startup, it's mostly noise. Make the exception trace log level a runtime variable, and change it after startup is done. Signed-off-by: Zygo Blaxell --- diff --git a/src/bees-context.cc b/src/bees-context.cc index e6da4fc4..e351ed02 100644 --- a/src/bees-context.cc +++ b/src/bees-context.cc @@ -1154,6 +1154,9 @@ BeesContext::start() // Kick off the crawlers roots()->start(); + + // Startup is finished. Any further exceptions will require -v8 to be seen. + bees_trace_level = LOG_DEBUG; } void diff --git a/src/bees-trace.cc b/src/bees-trace.cc index fdb1925c..f5633e6b 100644 --- a/src/bees-trace.cc +++ b/src/bees-trace.cc @@ -4,6 +4,10 @@ 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; @@ -22,18 +26,18 @@ BeesTracer::~BeesTracer() { 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; @@ -55,12 +59,12 @@ void 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 diff --git a/src/bees.cc b/src/bees.cc index d1152ceb..f66c607c 100644 --- a/src/bees.cc +++ b/src/bees.cc @@ -753,7 +753,7 @@ bees_main(int argc, char *argv[]) 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); } }); diff --git a/src/bees.h b/src/bees.h index 2493e767..1bbb0098 100644 --- a/src/bees.h +++ b/src/bees.h @@ -123,8 +123,8 @@ const int FLAGS_OPEN_FANOTIFY = O_RDWR | O_NOATIME | O_CLOEXEC | O_LARGEFILE; #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; })