|
17 | 17 | #include <fairlogger/Logger.h> |
18 | 18 | #if __has_include(<fmt/format.h>) |
19 | 19 | #include <fmt/format.h> |
20 | | -#define LOGF(level, ...) LOG(level) << fmt::format(__VA_ARGS__) |
| 20 | +#include <fmt/printf.h> |
| 21 | +FMT_BEGIN_NAMESPACE |
| 22 | +template <typename S, typename Char = FMT_CHAR(S)> |
| 23 | +inline int vfprintf(fair::Logger& logger, |
| 24 | + const S& format, |
| 25 | + basic_format_args<typename basic_printf_context_t< |
| 26 | + internal::basic_buffer<Char>>::type> |
| 27 | + args) |
| 28 | +{ |
| 29 | + basic_memory_buffer<Char> buffer; |
| 30 | + printf(buffer, to_string_view(format), args); |
| 31 | + logger << std::string_view(buffer.data(), buffer.size()); |
| 32 | + return static_cast<int>(buffer.size()); |
| 33 | +} |
| 34 | + |
| 35 | +template <typename S, typename... Args> |
| 36 | +inline FMT_ENABLE_IF_T(internal::is_string<S>::value, int) |
| 37 | + fprintf(fair::Logger& logger, |
| 38 | + const S& format_str, const Args&... args) |
| 39 | +{ |
| 40 | + internal::check_format_string<Args...>(format_str); |
| 41 | + typedef internal::basic_buffer<FMT_CHAR(S)> buffer; |
| 42 | + typedef typename basic_printf_context_t<buffer>::type context; |
| 43 | + format_arg_store<context, Args...> as{ args... }; |
| 44 | + return vfprintf(logger, to_string_view(format_str), |
| 45 | + basic_format_args<context>(as)); |
| 46 | +} |
| 47 | + |
| 48 | +FMT_END_NAMESPACE |
| 49 | + |
| 50 | +#define LOGF(severity, ...) \ |
| 51 | + for (bool fairLOggerunLikelyvariable = false; fair::Logger::Logging(fair::Severity::severity) && !fairLOggerunLikelyvariable; fairLOggerunLikelyvariable = true) \ |
| 52 | + fmt::fprintf(fair::Logger(fair::Severity::severity, __FILE__, CONVERTTOSTRING(__LINE__), __FUNCTION__).Log(), __VA_ARGS__) |
| 53 | +#define LOGP(level, ...) LOG(level) << fmt::format(__VA_ARGS__) |
21 | 54 | #else |
22 | 55 | #define O2_FIRST_ARG(N, ...) N |
23 | 56 | #define LOGF(level, ...) LOG(level) << O2_FIRST_ARG(__VA_ARGS__) |
| 57 | +#define LOGP(level, ...) LOG(level) << O2_FIRST_ARG(__VA_ARGS__) |
24 | 58 | #endif |
25 | 59 | #define O2DEBUG(...) LOGF(debug, __VA_ARGS__) |
26 | 60 | #define O2INFO(...) LOGF(info, __VA_ARGS__) |
27 | 61 | #define O2ERROR(...) LOGF(error, __VA_ARGS__) |
28 | 62 | #elif __has_include(<fmt/format.h>) |
29 | 63 | #include <fmt/format.h> |
30 | 64 | #define LOGF(level, ...) fmt::printf(__VA_ARGS__) |
| 65 | +#define LOGP(level, ...) fmt::print(__VA_ARGS__) |
31 | 66 | #define O2DEBUG(...) LOGF("dummy", __VA_ARGS__) |
32 | 67 | #define O2INFO(...) LOGF("dummy", __VA_ARGS__) |
33 | 68 | #define O2ERROR(...) LOGF("dummy", __VA_ARGS__) |
|
0 commit comments