From a1748ce66bc1492a4016e916541572434faea03a Mon Sep 17 00:00:00 2001 From: SchoenleAndi Date: Mon, 5 Dec 2016 10:17:38 +0100 Subject: [PATCH] addLogLevel now plays nice with having called setLogLevel before. --- src/g3log/loglevels.hpp | 2 +- src/loglevels.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/g3log/loglevels.hpp b/src/g3log/loglevels.hpp index ade36d6..a7a9944 100644 --- a/src/g3log/loglevels.hpp +++ b/src/g3log/loglevels.hpp @@ -115,7 +115,7 @@ namespace g3 { namespace only_change_at_initialization { // Enable/Disable a log level {DEBUG,INFO,WARNING,FATAL} void setLogLevel(LEVELS level, bool enabled_status); - void addLogLevel(LEVELS log_level); + void addLogLevel(LEVELS level, bool default_enabled_status = true); std::string printLevels(); void reset(); diff --git a/src/loglevels.cpp b/src/loglevels.cpp index 1d94346..9d76ab7 100644 --- a/src/loglevels.cpp +++ b/src/loglevels.cpp @@ -47,14 +47,15 @@ namespace g3 { #ifdef G3_DYNAMIC_LOGGING namespace only_change_at_initialization { - void setLogLevel(LEVELS log_level, bool enabled) { + void setLogLevel(LEVELS log_level, bool enabled_status) { int level = log_level.value; - internal::g_log_level_status[level].get().store(enabled, std::memory_order_release); + internal::g_log_level_status[level].get().store(enabled_status, std::memory_order_release); } - void addLogLevel(LEVELS log_level) { - internal::g_default_log_level_status[log_level.value].get().store(true, std::memory_order_release); - internal::g_log_level_status[log_level.value].get().store(true, std::memory_order_release); + void addLogLevel(LEVELS log_level, bool default_enabled_status) { + internal::g_default_log_level_status[log_level.value].get().store(default_enabled_status, std::memory_order_release); + if (! internal::g_log_level_status.count(log_level.value)) + setLogLevel(log_level, default_enabled_status); } std::string printLevels() {