From 12e86d7b3643d776353f9ecf10712d2b8fed55e3 Mon Sep 17 00:00:00 2001 From: wezrule Date: Tue, 26 Feb 2019 09:17:50 +0000 Subject: [PATCH] Invert bool logic to be error instead and check for default time point when trying to log --- nano/core_test/logger.cpp | 31 +++++++++++++++---------------- nano/node/logging.hpp | 18 ++++++++++-------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/nano/core_test/logger.cpp b/nano/core_test/logger.cpp index f6790f471..88b56e025 100644 --- a/nano/core_test/logger.cpp +++ b/nano/core_test/logger.cpp @@ -120,31 +120,30 @@ TEST (logger, changing_time_interval) logging.init (path1); logging.min_time_between_log_output = 0ms; nano::logger_mt my_logger (logging.min_time_between_log_output); - auto success (my_logger.try_log ("logger.changing_time_interval1")); - ASSERT_TRUE (success); + auto error (my_logger.try_log ("logger.changing_time_interval1")); + ASSERT_FALSE (error); logging.min_time_between_log_output = 20s; - success = my_logger.try_log ("logger, changing_time_interval2"); - ASSERT_FALSE (success); + error = my_logger.try_log ("logger, changing_time_interval2"); + ASSERT_TRUE (error); } TEST (logger, try_log) { auto path1 (nano::unique_path ()); - nano::logger_mt my_logger (3ms); std::stringstream ss; boost_log_cerr_redirect redirect_cerr (ss.rdbuf ()); - + nano::logger_mt my_logger (3ms); auto output1 = "logger.try_log1"; - auto success (my_logger.try_log (output1)); - ASSERT_TRUE (success); + auto error (my_logger.try_log (output1)); + ASSERT_FALSE (error); auto output2 = "logger.try_log2"; - success = my_logger.try_log (output2); - ASSERT_FALSE (success); // Fails as it is occuring too soon + error = my_logger.try_log (output2); + ASSERT_TRUE (error); // Fails as it is occuring too soon // Sleep for a bit and then confirm std::this_thread::sleep_for (3ms); - success = my_logger.try_log (output2); - ASSERT_TRUE (success); + error = my_logger.try_log (output2); + ASSERT_FALSE (error); std::string str; std::getline (ss, str, '\n'); @@ -160,13 +159,13 @@ TEST (logger, always_log) boost_log_cerr_redirect redirect_cerr (ss.rdbuf ()); nano::logger_mt my_logger (20s); // Make time interval effectively unreachable auto output1 = "logger.always_log1"; - auto success (my_logger.try_log (output1)); - ASSERT_TRUE (success); + auto error (my_logger.try_log (output1)); + ASSERT_FALSE (error); // Time is too soon after, so it won't be logged auto output2 = "logger.always_log2"; - success = my_logger.try_log (output2); - ASSERT_FALSE (success); + error = my_logger.try_log (output2); + ASSERT_TRUE (error); // Force it to be logged my_logger.always_log (output2); diff --git a/nano/node/logging.hpp b/nano/node/logging.hpp index 8efe73293..15ad7901e 100644 --- a/nano/node/logging.hpp +++ b/nano/node/logging.hpp @@ -9,6 +9,8 @@ #define FATAL_LOG_PREFIX "FATAL ERROR: " +using namespace std::chrono; + namespace nano { // A wrapper around a boost logger object to allow @@ -67,20 +69,20 @@ public: template bool try_log (LogItems &&... log_items) { - auto logged (false); - auto time_now = std::chrono::steady_clock::now (); - if ((time_now - last_log_time) > min_log_delta) + auto error (true); + auto time_now = steady_clock::now (); + if (((time_now - last_log_time) > min_log_delta) || last_log_time == steady_clock::time_point{}) { output (std::forward (log_items)...); last_log_time = time_now; - logged = true; + error = false; } - return logged; + return error; } private: - std::chrono::milliseconds const & min_log_delta; - std::chrono::steady_clock::time_point last_log_time; + milliseconds const & min_log_delta; + steady_clock::time_point last_log_time; boost::log::sources::logger_mt boost_logger_mt; }; @@ -132,7 +134,7 @@ public: bool flush{ true }; uintmax_t max_size{ 128 * 1024 * 1024 }; uintmax_t rotation_size{ 4 * 1024 * 1024 }; - std::chrono::milliseconds min_time_between_log_output{ 5 }; + milliseconds min_time_between_log_output{ 5 }; nano::logger_mt logger{ min_time_between_log_output }; int json_version () const {