diff --git a/src/debug.cpp b/src/debug.cpp index 015ce13c1..0dd717467 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -207,7 +207,10 @@ void debug_dump(void *lp, int len) } } -bool set_log_level(const char *optarg, bool *logger_repeat_msgs, int *show_timestamps) { +bool set_log_level(const char *optarg, + bool *logger_repeat_msgs, + log_timestamp_mode *show_timestamps) +{ assert(optarg != nullptr); assert(logger_repeat_msgs != nullptr); assert(show_timestamps != nullptr); @@ -245,7 +248,10 @@ bool set_log_level(const char *optarg, bool *logger_repeat_msgs, int *show_times if (const char *timestamps = strstr(optarg, "timestamps")) { if (timestamps > optarg) { - *show_timestamps = timestamps[-1] == '+' ? 1 : 0; + if(timestamps[-1] == '+') + *show_timestamps = LOG_TIMESTAMP_ENABLED; + else + *show_timestamps = LOG_TIMESTAMP_DISABLED; } } @@ -282,10 +288,7 @@ bool set_log_level(const char *optarg, bool *logger_repeat_msgs, int *show_times return false; } -/** - * @param show_timestamps 0 - no; 1 - yes; -1 auto - */ -void Logger::preinit(bool skip_repeated, int show_timestamps) +void Logger::preinit(bool skip_repeated, log_timestamp_mode show_timestamps) { Logger::skip_repeated = skip_repeated; Logger::show_timestamps = show_timestamps; @@ -360,5 +363,5 @@ void debug_file_dump(const char *key, void (*serialize)(const void *data, FILE * std::atomic Logger::last_msg{}; thread_local std::set Logger::oneshot_messages; std::atomic Logger::skip_repeated{true}; -int Logger::show_timestamps = -1; +log_timestamp_mode Logger::show_timestamps = LOG_TIMESTAMP_AUTO; diff --git a/src/debug.h b/src/debug.h index 515e1fda2..3cacbfaea 100644 --- a/src/debug.h +++ b/src/debug.h @@ -65,6 +65,11 @@ #define LOG_LEVEL_MAX LOG_LEVEL_DEBUG2 extern volatile int log_level; +enum log_timestamp_mode{ + LOG_TIMESTAMP_DISABLED = 0, + LOG_TIMESTAMP_ENABLED = 1, + LOG_TIMESTAMP_AUTO = -1 +}; #ifdef __cplusplus extern "C" { @@ -89,7 +94,9 @@ void log_msg(int log_level, const char *format, ...) ATTRIBUTE(format (printf, 2 void log_msg_once(int log_level, uint32_t id, const char *msg); void log_perror(int log_level, const char *msg); -bool set_log_level(const char *optarg, bool *logger_repeat_msgs, int *show_timestamps); +bool set_log_level(const char *optarg, + bool *logger_repeat_msgs, + enum log_timestamp_mode *show_timestamps); #ifdef __cplusplus } @@ -113,7 +120,7 @@ class keyboard_control; // friend class Logger { public: - static void preinit(bool skip_repeated, int show_timetamps); + static void preinit(bool skip_repeated, log_timestamp_mode show_timestamps); inline Logger(int l) : level(l) {} inline ~Logger() { rang::fg color = rang::fg::reset; @@ -172,7 +179,7 @@ private: std::ostringstream oss; static std::atomic skip_repeated; - static int show_timestamps; + static log_timestamp_mode show_timestamps; struct last_message { std::string msg; int count{0}; diff --git a/src/host.cpp b/src/host.cpp index 4f2119b5c..f06af984e 100644 --- a/src/host.cpp +++ b/src/host.cpp @@ -326,7 +326,7 @@ static bool parse_opts_set_logging(int argc, char *argv[]) opterr = saved_opterr; bool logger_repeat_msgs = false; - int logger_show_timestamps = -1; + log_timestamp_mode logger_show_timestamps = LOG_TIMESTAMP_AUTO; if (log_opt != nullptr && !set_log_level(log_opt, &logger_repeat_msgs, &logger_show_timestamps)) { return false; }