From 2f34de820b2cdcc1204afe82974b64bfcba6cb18 Mon Sep 17 00:00:00 2001 From: Denis Ivaykin Date: Tue, 27 Jan 2015 08:31:50 -0600 Subject: [PATCH] coarse clock, short log level --- include/spdlog/common.h | 7 +++++++ include/spdlog/details/line_logger.h | 11 +++++++++++ include/spdlog/details/pattern_formatter_impl.h | 13 +++++++++++++ 3 files changed, 31 insertions(+) diff --git a/include/spdlog/common.h b/include/spdlog/common.h index 36c2160e..c9076e98 100644 --- a/include/spdlog/common.h +++ b/include/spdlog/common.h @@ -71,10 +71,17 @@ typedef enum static const char* level_names[] { "trace", "debug", "info", "notice", "warning", "error", "critical", "alert", "emerg", "off"}; +static const char* short_level_names[] { "T", "D", "I", "N", "W", "E", "C", "A", "M", "O"}; + inline const char* to_str(spdlog::level::level_enum l) { return level_names[l]; } + +inline const char* to_short_str(spdlog::level::level_enum l) +{ + return short_level_names[l]; +} } //level diff --git a/include/spdlog/details/line_logger.h b/include/spdlog/details/line_logger.h index 1dc0b911..7cb2d1d1 100644 --- a/include/spdlog/details/line_logger.h +++ b/include/spdlog/details/line_logger.h @@ -26,6 +26,9 @@ #include "../common.h" #include "../logger.h" +#ifdef SPDLOG_CLOCK_COARSE +#include +#endif // Line logger class - aggregates operator<< calls to fast ostream @@ -64,7 +67,15 @@ public: if (_enabled) { _log_msg.logger_name = _callback_logger->name(); +#ifndef SPDLOG_CLOCK_COARSE _log_msg.time = log_clock::now(); +#else + timespec ts; + ::clock_gettime(CLOCK_REALTIME_COARSE, &ts); + _log_msg.time = std::chrono::time_point( + std::chrono::duration_cast( + std::chrono::seconds(ts.tv_sec) + std::chrono::nanoseconds(ts.tv_nsec))); +#endif _callback_logger->_log_msg(_log_msg); } } diff --git a/include/spdlog/details/pattern_formatter_impl.h b/include/spdlog/details/pattern_formatter_impl.h index d2a18427..b904d32d 100644 --- a/include/spdlog/details/pattern_formatter_impl.h +++ b/include/spdlog/details/pattern_formatter_impl.h @@ -69,6 +69,15 @@ class level_formatter :public flag_formatter } }; +// short log level appender +class short_level_formatter :public flag_formatter +{ + void format(details::log_msg& msg, const std::tm&) override + { + msg.formatted << level::to_short_str(msg.level); + } +}; + /////////////////////////////////////////////////////////////////////// // Date time pattern appenders /////////////////////////////////////////////////////////////////////// @@ -478,6 +487,10 @@ inline void spdlog::pattern_formatter::handle_flag(char flag) _formatters.push_back(std::unique_ptr(new details::level_formatter())); break; + case 'L': + _formatters.push_back(std::unique_ptr(new details::short_level_formatter())); + break; + case('t') : _formatters.push_back(std::unique_ptr(new details::t_formatter())); break;