Invert bool logic to be error instead and check for default time point when trying to log
This commit is contained in:
parent
bab39123c2
commit
12e86d7b36
2 changed files with 25 additions and 24 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 <typename... LogItems>
|
||||
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<LogItems> (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
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue