From f35afe62a4ae49e27f2e67c14918bdee133a7b83 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Fri, 22 Sep 2017 14:14:58 +0100 Subject: epee: factor log level/categories setting --- contrib/epee/src/mlog.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'contrib/epee/src/mlog.cpp') diff --git a/contrib/epee/src/mlog.cpp b/contrib/epee/src/mlog.cpp index a3f38e677..f7efbe39d 100644 --- a/contrib/epee/src/mlog.cpp +++ b/contrib/epee/src/mlog.cpp @@ -152,8 +152,7 @@ void mlog_set_categories(const char *categories) void mlog_set_log_level(int level) { const char *categories = get_default_categories(level); - el::Loggers::setCategories(categories); - MLOG_LOG("New log categories: " << categories); + mlog_set_categories(categories); } void mlog_set_log(const char *log) -- cgit v1.2.3 From 792ba4f0fe88cb29e28d3bede2eacafce154bb64 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Fri, 22 Sep 2017 17:54:58 +0100 Subject: Log categories can now be added to and removed from Also, set_log without parameters now prints the log categories --- contrib/epee/src/mlog.cpp | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'contrib/epee/src/mlog.cpp') diff --git a/contrib/epee/src/mlog.cpp b/contrib/epee/src/mlog.cpp index f7efbe39d..4fd47a350 100644 --- a/contrib/epee/src/mlog.cpp +++ b/contrib/epee/src/mlog.cpp @@ -144,8 +144,45 @@ void mlog_configure(const std::string &filename_base, bool console) void mlog_set_categories(const char *categories) { - el::Loggers::setCategories(categories); - MLOG_LOG("New log categories: " << categories); + std::string new_categories; + if (*categories) + { + if (*categories == '+') + { + ++categories; + new_categories = mlog_get_categories(); + if (*categories) + { + if (!new_categories.empty()) + new_categories += ","; + new_categories += categories; + } + } + else if (*categories == '-') + { + ++categories; + new_categories = mlog_get_categories(); + std::vector single_categories; + boost::split(single_categories, categories, boost::is_any_of(","), boost::token_compress_on); + for (const std::string &s: single_categories) + { + size_t pos = new_categories.find(s); + if (pos != std::string::npos) + new_categories = new_categories.erase(pos, s.size()); + } + } + else + { + new_categories = categories; + } + } + el::Loggers::setCategories(new_categories.c_str(), true); + MLOG_LOG("New log categories: " << el::Loggers::getCategories()); +} + +std::string mlog_get_categories() +{ + return el::Loggers::getCategories(); } // maps epee style log level to new logging system -- cgit v1.2.3