]> git.hungrycats.org Git - bees/commitdiff
trace: variable exception back trace log level
authorZygo Blaxell <bees@furryterror.org>
Fri, 15 Aug 2025 01:32:52 +0000 (21:32 -0400)
committerZygo Blaxell <bees@furryterror.org>
Sat, 14 Feb 2026 05:23:07 +0000 (00:23 -0500)
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 <bees@furryterror.org>
src/bees-context.cc
src/bees-trace.cc
src/bees.cc
src/bees.h

index e6da4fc4d2fd762a8ea1179ae47a33b6248f767e..e351ed02b4bc623f61483eaf50446fb3df219187 100644 (file)
@@ -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
index fdb1925c1e3e699632f8aa370acb96d1abcfd339..f5633e6b39f6438470aededb71e4d571b9cf1ab5 100644 (file)
@@ -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
index d1152cebe7a73b9ac26febbc970f8016dbf64258..f66c607c58764d97b3604ec6191d50e6c05d2ac7 100644 (file)
@@ -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);
                }
        });
index 2493e7675fdd9636cdbefaa0ca9fb6d3edb521f9..1bbb00982b6cfe7366c2cb569996b662592457fd 100644 (file)
@@ -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; })