28#ifndef ESO_UATOOLS_PROTOCOL_BASE_LOGGER_HPP
29#define ESO_UATOOLS_PROTOCOL_BASE_LOGGER_HPP
35#include <fmt/format.h>
92 virtual void Throw(
const std::string& message);
158 template <
typename... Args>
159 inline std::string
TraceExtra(fmt::string_view fmt_str, Args&&... args) {
160 return ": " + fmt::vformat(fmt_str, fmt::make_format_args(args...));
179#define UAT_LOG_IMPL_(level_, fmt_str_, ...) \
181 auto& _uat_log = ::eso::uatools::protocol::base::Log(); \
182 if (_uat_log.GetLogLevel() <= (level_)) { \
183 _uat_log.Emit((level_), \
186 ::fmt::runtime(std::string(fmt_str_)) \
187 __VA_OPT__(,) __VA_ARGS__)); \
201#define UATTRACE(...) \
203 auto& _uat_log = ::eso::uatools::protocol::base::Log(); \
204 if (_uat_log.GetLogLevel() <= ::eso::uatools::protocol::base::LogLevel::TRACE) { \
205 _uat_log.Emit(::eso::uatools::protocol::base::LogLevel::TRACE, \
206 UATLOC + ": " + std::string(__PRETTY_FUNCTION__) + \
207 ::eso::uatools::protocol::base::TraceExtra(__VA_ARGS__)); \
211#define UATDEBUG(fmt_str, ...) \
212 UAT_LOG_IMPL_(::eso::uatools::protocol::base::LogLevel::DEBUG, fmt_str __VA_OPT__(,) __VA_ARGS__)
214#define UATINFO(fmt_str, ...) \
215 UAT_LOG_IMPL_(::eso::uatools::protocol::base::LogLevel::INFO, fmt_str __VA_OPT__(,) __VA_ARGS__)
217#define UATWARNING(fmt_str, ...) \
218 UAT_LOG_IMPL_(::eso::uatools::protocol::base::LogLevel::WARNING, fmt_str __VA_OPT__(,) __VA_ARGS__)
220#define UATERROR(fmt_str, ...) \
221 UAT_LOG_IMPL_(::eso::uatools::protocol::base::LogLevel::ERROR, fmt_str __VA_OPT__(,) __VA_ARGS__)
223#define UATTHROW(fmt_str, ...) \
225 ::eso::uatools::protocol::base::Log().Throw( \
228 ::fmt::runtime(std::string(fmt_str)) \
229 __VA_OPT__(,) __VA_ARGS__)); \
Small VLTSW-safe base utilities used by uatools/protocol log format strings (UATLOC macro,...