From 7ee62814262a55cf1599b97b515fe8084bfb10b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20D=C3=A9saulniers?= <sim.desaulniers@gmail.com> Date: Wed, 19 Oct 2016 15:34:40 -0400 Subject: [PATCH] log: display time before each line in log --- include/opendht/log.h | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/include/opendht/log.h b/include/opendht/log.h index 5a47e870..863fcf25 100644 --- a/include/opendht/log.h +++ b/include/opendht/log.h @@ -24,6 +24,7 @@ #include <iostream> #include <fstream> +#include <chrono> namespace dht { namespace log { @@ -63,13 +64,23 @@ constexpr const Color::Modifier yellow(Color::FG_YELLOW); */ void printLog(std::ostream& s, char const* m, va_list args) { - static constexpr int BUF_SZ = 8192; - char buffer[BUF_SZ]; - int ret = vsnprintf(buffer, sizeof(buffer), m, args); + // print log to buffer + std::array<char, 8192> buffer; + int ret = vsnprintf(buffer.data(), buffer.size(), m, args); if (ret < 0) return; - s.write(buffer, std::min(ret, BUF_SZ)); - if (ret >= BUF_SZ) + + // write timestamp + using namespace std::chrono; + using log_precision = microseconds; + constexpr auto den = log_precision::period::den; + auto micro = duration_cast<log_precision>(steady_clock::now().time_since_epoch()).count(); + s << "[" << std::setfill('0') << std::setw(6) << micro / den << "." + << std::setfill('0') << std::setw(6) << micro % den << "]" << " "; + + // write log + s.write(buffer.data(), std::min((size_t)ret, buffer.size())); + if ((size_t)ret >= buffer.size()) s << "[[TRUNCATED]]"; s.put('\n'); } -- GitLab