summaryrefslogtreecommitdiff
path: root/src/common/logging/log.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/logging/log.h')
-rw-r--r--src/common/logging/log.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/common/logging/log.h b/src/common/logging/log.h
index 3cf13fcb0..31fa932fb 100644
--- a/src/common/logging/log.h
+++ b/src/common/logging/log.h
@@ -4,6 +4,8 @@
4 4
5#pragma once 5#pragma once
6 6
7#include <chrono>
8#include <fmt/format.h>
7#include "common/common_types.h" 9#include "common/common_types.h"
8 10
9namespace Log { 11namespace Log {
@@ -87,7 +89,7 @@ enum class Class : ClassType {
87}; 89};
88 90
89/// Logs a message to the global logger. 91/// Logs a message to the global logger.
90void LogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_nr, 92void LogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_num,
91 const char* function, 93 const char* function,
92#ifdef _MSC_VER 94#ifdef _MSC_VER
93 _Printf_format_string_ 95 _Printf_format_string_
@@ -99,6 +101,10 @@ void LogMessage(Class log_class, Level log_level, const char* filename, unsigned
99#endif 101#endif
100 ; 102 ;
101 103
104void FmtLogMessage(Class log_class, Level log_level, const char* filename, unsigned int line_num,
105 const char* function, const char* format, const fmt::ArgList& args);
106FMT_VARIADIC(void, FmtLogMessage, Class, Level, const char*, unsigned int, const char*, const char*)
107
102} // namespace Log 108} // namespace Log
103 109
104#define LOG_GENERIC(log_class, log_level, ...) \ 110#define LOG_GENERIC(log_class, log_level, ...) \
@@ -121,3 +127,28 @@ void LogMessage(Class log_class, Level log_level, const char* filename, unsigned
121 LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Error, __VA_ARGS__) 127 LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Error, __VA_ARGS__)
122#define LOG_CRITICAL(log_class, ...) \ 128#define LOG_CRITICAL(log_class, ...) \
123 LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Critical, __VA_ARGS__) 129 LOG_GENERIC(::Log::Class::log_class, ::Log::Level::Critical, __VA_ARGS__)
130
131// Define the fmt lib macros
132#ifdef _DEBUG
133#define NGLOG_TRACE(log_class, ...) \
134 ::Log::FmtLogMessage(::Log::Class::log_class, ::Log::Level::Trace, __FILE__, __LINE__, \
135 __func__, __VA_ARGS__)
136#else
137#define NGLOG_TRACE(log_class, fmt, ...) (void(0))
138#endif
139
140#define NGLOG_DEBUG(log_class, ...) \
141 ::Log::FmtLogMessage(::Log::Class::log_class, ::Log::Level::Debug, __FILE__, __LINE__, \
142 __func__, __VA_ARGS__)
143#define NGLOG_INFO(log_class, ...) \
144 ::Log::FmtLogMessage(::Log::Class::log_class, ::Log::Level::Info, __FILE__, __LINE__, \
145 __func__, __VA_ARGS__)
146#define NGLOG_WARNING(log_class, ...) \
147 ::Log::FmtLogMessage(::Log::Class::log_class, ::Log::Level::Warning, __FILE__, __LINE__, \
148 __func__, __VA_ARGS__)
149#define NGLOG_ERROR(log_class, ...) \
150 ::Log::FmtLogMessage(::Log::Class::log_class, ::Log::Level::Error, __FILE__, __LINE__, \
151 __func__, __VA_ARGS__)
152#define NGLOG_CRITICAL(log_class, ...) \
153 ::Log::FmtLogMessage(::Log::Class::log_class, ::Log::Level::Critical, __FILE__, __LINE__, \
154 __func__, __VA_ARGS__)