From 950006c03612a36f470a07804cd628be3bcad9fb Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Mon, 9 Dec 2019 08:08:30 -0500 Subject: [PATCH] reduce log levels at runtime --- llarp/router/router.cpp | 2 ++ llarp/util/logging/logger.cpp | 14 +++++++++++++- llarp/util/logging/logger.hpp | 12 ++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index 6f5478959..56b725058 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -1042,6 +1042,7 @@ namespace llarp #if defined(WITH_SYSTEMD) ::sd_notify(0, "READY=1"); #endif + LogContext::Instance().DropToRuntimeLevel(); return _running; } @@ -1091,6 +1092,7 @@ namespace llarp return; _stopping.store(true); + LogContext::Instance().RevertRuntimeLevel(); LogInfo("stopping router"); hiddenServiceContext().StopAll(); _exitContext.Stop(); diff --git a/llarp/util/logging/logger.cpp b/llarp/util/logging/logger.cpp index 9e99a4781..31f06d625 100644 --- a/llarp/util/logging/logger.cpp +++ b/llarp/util/logging/logger.cpp @@ -36,6 +36,18 @@ namespace llarp return ctx; } + void + LogContext::DropToRuntimeLevel() + { + curLevel = runtimeLevel; + } + + void + LogContext::RevertRuntimeLevel() + { + curLevel = startupLevel; + } + log_timestamp::log_timestamp() : log_timestamp("%c %Z") { } @@ -50,7 +62,7 @@ namespace llarp void SetLogLevel(LogLevel lvl) { - LogContext::Instance().minLevel = lvl; + LogContext::Instance().curLevel = lvl; } } // namespace llarp diff --git a/llarp/util/logging/logger.hpp b/llarp/util/logging/logger.hpp index 206c8a000..9a020aad0 100644 --- a/llarp/util/logging/logger.hpp +++ b/llarp/util/logging/logger.hpp @@ -83,7 +83,9 @@ namespace llarp struct LogContext { LogContext(); - LogLevel minLevel = eLogInfo; + LogLevel curLevel = eLogInfo; + LogLevel startupLevel = eLogInfo; + LogLevel runtimeLevel = eLogWarn; ILogStream_ptr logStream; std::string nodeName = "lokinet"; @@ -91,6 +93,12 @@ namespace llarp static LogContext& Instance(); + + void + DropToRuntimeLevel(); + + void + RevertRuntimeLevel(); }; void @@ -102,7 +110,7 @@ namespace llarp _Log(LogLevel lvl, const char* fname, int lineno, TArgs&&... args) noexcept { auto& log = LogContext::Instance(); - if(log.minLevel > lvl) + if(log.curLevel > lvl) return; std::stringstream ss;