From 13ea7062eb49486be88b6c9139e01b693a84b6b0 Mon Sep 17 00:00:00 2001 From: David Schneller Date: Mon, 8 Jul 2024 19:23:46 +0200 Subject: [PATCH] Update logging format --- logger.h | 28 ++++++++++++++++++---------- stringutils.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/logger.h b/logger.h index 0121c7f..78a710a 100644 --- a/logger.h +++ b/logger.h @@ -5,9 +5,11 @@ #ifndef UTILS_LOGGER_H_ #define UTILS_LOGGER_H_ +#include "utils/stringutils.h" #include "utils/timeutils.h" #include +#include #include #include #include @@ -57,9 +59,6 @@ namespace utils { */ class Logger { public: - // cf. https://stackoverflow.com/a/72665316 - const static inline std::string LogDateFormat = "%Y-%m-%dT%H:%M:%S.%f"; - /** Message type */ enum DebugType { /** A debug messages */ @@ -105,28 +104,37 @@ class Logger { * 0 will be printed */ Logger(DebugType t, int rank) : stream(new Stream(t, rank)) { - stream->buffer << utils::TimeUtils::timeAsString(LogDateFormat.c_str()); + auto timepoint = std::chrono::system_clock::now(); + auto milli = std::chrono::duration_cast( + timepoint.time_since_epoch()) + .count(); + time_t time = std::chrono::system_clock::to_time_t(timepoint); + + stream->buffer << utils::TimeUtils::timeAsString("%F %T", time) << "." + << StringUtils::padLeft(std::to_string(milli), 3, ' '); switch (t) { case LOG_DEBUG: - stream->buffer << "| DEBG | "; + stream->buffer << " debug "; break; case LOG_INFO: - stream->buffer << "| INFO |"; + stream->buffer << " info "; break; case LOG_WARNING: - stream->buffer << "| WARN | "; + stream->buffer << " warning "; break; case LOG_ERROR: - stream->buffer << "| ERROR | "; + stream->buffer << " error "; break; default: - stream->buffer << "| UNKNOWN | "; + stream->buffer << " unknown "; break; } if (rank >= 0) { - stream->buffer << "RANK " << rank << " | "; + stream->buffer << rank << " "; + } else { + stream->buffer << "- "; } } /** diff --git a/stringutils.h b/stringutils.h index c6ee0f8..2c58a65 100644 --- a/stringutils.h +++ b/stringutils.h @@ -71,6 +71,36 @@ class StringUtils { str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; } + static std::string padLeft(const std::string &str, std::size_t size, + char padchar) { + if (str.size() >= size) { + return str; + } else { + std::stringstream stream; + std::size_t padlen = size - str.size(); + for (std::size_t i = 0; i < padlen; ++i) { + stream << padchar; + } + stream << str; + return stream.str(); + } + } + + static std::string padRight(const std::string &str, std::size_t size, + char padchar) { + if (str.size() >= size) { + return str; + } else { + std::stringstream stream; + stream << str; + std::size_t padlen = size - str.size(); + for (std::size_t i = 0; i < padlen; ++i) { + stream << padchar; + } + return stream.str(); + } + } + /** * Converts arbitrary datatypes (all datatypes which support the << stream * operator) into std::string