28 using LogFunc = std::function<void(
unsigned int level,
const char*
file,
29 unsigned int line,
const char* msg)>;
39 unsigned int min_level()
const {
return m_min_level; }
41 void DoLog(
unsigned int level,
const char*
file,
unsigned int line,
44 void LogV(
unsigned int level,
const char*
file,
unsigned int line,
45 fmt::string_view
format, fmt::format_args args);
47 template <
typename... Args>
48 void Log(
unsigned int level,
const char*
file,
unsigned int line,
49 fmt::string_view
format, Args&&... args) {
50 if (m_func && level >= m_min_level) {
55 bool HasLogger()
const {
return m_func !=
nullptr; }
59 unsigned int m_min_level = 20;
65#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
68#define WPI_LOG(logger_inst, level, format, ...) \
69 if ((logger_inst).HasLogger() && level >= (logger_inst).min_level()) { \
71 .Log(level, __FILE__, __LINE__, format __VA_OPT__(, ) __VA_ARGS__); \
74#define WPI_ERROR(inst, format, ...) \
75 WPI_LOG(inst, ::wpi::util::WPI_LOG_ERROR, format __VA_OPT__(, ) __VA_ARGS__)
76#define WPI_WARNING(inst, format, ...) \
77 WPI_LOG(inst, ::wpi::util::WPI_LOG_WARNING, format __VA_OPT__(, ) __VA_ARGS__)
78#define WPI_INFO(inst, format, ...) \
79 WPI_LOG(inst, ::wpi::util::WPI_LOG_INFO, format __VA_OPT__(, ) __VA_ARGS__)
80#define WPI_DEBUG(inst, format, ...) \
81 WPI_LOG(inst, ::wpi::util::WPI_LOG_DEBUG, format __VA_OPT__(, ) __VA_ARGS__)
82#define WPI_DEBUG1(inst, format, ...) \
83 WPI_LOG(inst, ::wpi::util::WPI_LOG_DEBUG1, format __VA_OPT__(, ) __VA_ARGS__)
84#define WPI_DEBUG2(inst, format, ...) \
85 WPI_LOG(inst, ::wpi::util::WPI_LOG_DEBUG2, format __VA_OPT__(, ) __VA_ARGS__)
86#define WPI_DEBUG3(inst, format, ...) \
87 WPI_LOG(inst, ::wpi::util::WPI_LOG_DEBUG3, format __VA_OPT__(, ) __VA_ARGS__)
88#define WPI_DEBUG4(inst, format, ...) \
89 WPI_LOG(inst, ::wpi::util::WPI_LOG_DEBUG4, format __VA_OPT__(, ) __VA_ARGS__)
then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file
Definition ThirdPartyNotices.txt:204
Logger(LogFunc func, unsigned int min_level)
Definition Logger.hpp:33
bool HasLogger() const
Definition Logger.hpp:55
void LogV(unsigned int level, const char *file, unsigned int line, fmt::string_view format, fmt::format_args args)
void set_min_level(unsigned int level)
Definition Logger.hpp:38
unsigned int min_level() const
Definition Logger.hpp:39
void DoLog(unsigned int level, const char *file, unsigned int line, const char *msg)
void Log(unsigned int level, const char *file, unsigned int line, fmt::string_view format, Args &&... args)
Definition Logger.hpp:48
Logger(LogFunc func)
Definition Logger.hpp:32
std::function< void(unsigned int level, const char *file, unsigned int line, const char *msg)> LogFunc
Definition Logger.hpp:28
void SetLogger(LogFunc func)
Definition Logger.hpp:36
Definition StringMap.hpp:773
Definition raw_os_ostream.hpp:19
LogLevel
Definition Logger.hpp:14
@ WPI_LOG_WARNING
Definition Logger.hpp:17
@ WPI_LOG_CRITICAL
Definition Logger.hpp:15
@ WPI_LOG_DEBUG
Definition Logger.hpp:19
@ WPI_LOG_DEBUG4
Definition Logger.hpp:23
@ WPI_LOG_ERROR
Definition Logger.hpp:16
@ WPI_LOG_DEBUG3
Definition Logger.hpp:22
@ WPI_LOG_DEBUG1
Definition Logger.hpp:20
@ WPI_LOG_INFO
Definition Logger.hpp:18
@ WPI_LOG_DEBUG2
Definition Logger.hpp:21