8 #ifndef WPIUTIL_SUPPORT_LOGGER_H_ 9 #define WPIUTIL_SUPPORT_LOGGER_H_ 13 #include "llvm/raw_ostream.h" 14 #include "llvm/SmallString.h" 19 WPI_LOG_CRITICAL = 50,
32 typedef std::function<void(
unsigned int level,
const char* file,
33 unsigned int line,
const char* msg)> LogFunc;
36 explicit Logger(
const LogFunc& func) : m_func(func) {}
37 Logger(
const LogFunc& func,
unsigned int min_level)
38 : m_func(func), m_min_level(min_level) {}
40 void SetLogger(LogFunc func) { m_func = func; }
42 void set_min_level(
unsigned int level) { m_min_level = level; }
43 unsigned int min_level()
const {
return m_min_level; }
45 void Log(
unsigned int level,
const char* file,
unsigned int line,
47 if (!m_func || level < m_min_level)
return;
48 m_func(level, file, line, msg);
51 bool HasLogger()
const {
return m_func !=
nullptr; }
55 unsigned int m_min_level = 20;
58 #define WPI_LOG(logger_inst, level, x) \ 60 ::wpi::Logger& WPI_logger_ = logger_inst; \ 61 if (WPI_logger_.min_level() <= level && WPI_logger_.HasLogger()) { \ 62 llvm::SmallString<128> log_buf_; \ 63 llvm::raw_svector_ostream log_os_{log_buf_}; \ 65 WPI_logger_.Log(level, __FILE__, __LINE__, log_buf_.c_str()); \ 69 #define WPI_ERROR(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_ERROR, x) 70 #define WPI_WARNING(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_WARNING, x) 71 #define WPI_INFO(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_INFO, x) 74 #define WPI_DEBUG(inst, x) do {} while (0) 75 #define WPI_DEBUG1(inst, x) do {} while (0) 76 #define WPI_DEBUG2(inst, x) do {} while (0) 77 #define WPI_DEBUG3(inst, x) do {} while (0) 78 #define WPI_DEBUG4(inst, x) do {} while (0) 80 #define WPI_DEBUG(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_DEBUG, x) 81 #define WPI_DEBUG1(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_DEBUG1, x) 82 #define WPI_DEBUG2(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_DEBUG2, x) 83 #define WPI_DEBUG3(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_DEBUG3, x) 84 #define WPI_DEBUG4(inst, x) WPI_LOG(inst, ::wpi::WPI_LOG_DEBUG4, x) 89 #endif // WPIUTIL_SUPPORT_LOGGER_H_ Definition: SocketError.cpp:18