37struct OPENDHT_PUBLIC Logger
41 : logger(std::move(l))
44 throw std::invalid_argument {
"logger and loggerf must be set"};
46 void setFilter(
const InfoHash& f)
49 filterEnable_ =
static_cast<bool>(filter_);
51 inline void log0(LogLevel level, fmt::string_view format, fmt::printf_args args)
const
53 if (not filterEnable_)
54 logger(level, fmt::vsprintf(format, args));
56 inline void log1(LogLevel level,
const InfoHash& f, fmt::string_view format, fmt::printf_args args)
const
58 if (not filterEnable_ or f == filter_)
59 logger(level, fmt::vsprintf(format, args));
62 LogLevel level,
const InfoHash& f1,
const InfoHash& f2, fmt::string_view format, fmt::printf_args args)
const
64 if (not filterEnable_ or f1 == filter_ or f2 == filter_)
65 logger(level, fmt::vsprintf(format, args));
67 template<
typename... Args>
68 inline void debug(fmt::format_string<Args...> format, Args&&... args)
const
70 logger(LogLevel::debug, fmt::format(format, std::forward<Args>(args)...));
72 template<
typename... Args>
73 inline void warn(fmt::format_string<Args...> format, Args&&... args)
const
75 logger(LogLevel::warning, fmt::format(format, std::forward<Args>(args)...));
77 template<
typename... Args>
78 inline void error(fmt::format_string<Args...> format, Args&&... args)
const
80 logger(LogLevel::error, fmt::format(format, std::forward<Args>(args)...));
82 template<
typename... T>
83 inline void d(fmt::format_string<T...> format, T&&... args)
const
85 log0(LogLevel::debug, format, fmt::make_printf_args(args...));
87 template<
typename... T>
88 inline void d(
const InfoHash& f, fmt::format_string<T...> format, T&&... args)
const
90 log1(LogLevel::debug, f, format, fmt::make_printf_args(args...));
92 template<
typename... T>
93 inline void d(
const InfoHash& f1,
const InfoHash& f2, fmt::format_string<T...> format, T&&... args)
const
95 log2(LogLevel::debug, f1, f2, format, fmt::make_printf_args(args...));
97 template<
typename... T>
98 inline void w(fmt::format_string<T...> format, T&&... args)
const
100 log0(LogLevel::warning, format, fmt::make_printf_args(args...));
102 template<
typename... T>
103 inline void w(
const InfoHash& f, fmt::format_string<T...> format, T&&... args)
const
105 log1(LogLevel::warning, f, format, fmt::make_printf_args(args...));
107 template<
typename... T>
108 inline void w(
const InfoHash& f1,
const InfoHash& f2, fmt::format_string<T...> format, T&&... args)
const
110 log2(LogLevel::warning, f1, f2, format, fmt::make_printf_args(args...));
112 template<
typename... T>
113 inline void e(fmt::format_string<T...> format, T&&... args)
const
115 log0(LogLevel::error, format, fmt::make_printf_args(args...));
117 template<
typename... T>
118 inline void e(
const InfoHash& f, fmt::format_string<T...> format, T&&... args)
const
120 log1(LogLevel::error, f, format, fmt::make_printf_args(args...));
122 template<
typename... T>
123 inline void e(
const InfoHash& f1,
const InfoHash& f2, fmt::format_string<T...> format, T&&... args)
const
125 log2(LogLevel::error, f1, f2, format, fmt::make_printf_args(args...));
129 LogMethod logger = {};
130 bool filterEnable_ {
false};