diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | include/cru/base/log/Logger.h | 33 |
2 files changed, 21 insertions, 14 deletions
@@ -3,6 +3,6 @@ .cache build +build-clang compile_commands.json - diff --git a/include/cru/base/log/Logger.h b/include/cru/base/log/Logger.h index 1963b612..3ed119e2 100644 --- a/include/cru/base/log/Logger.h +++ b/include/cru/base/log/Logger.h @@ -1,7 +1,6 @@ #pragma once #include "../Base.h" -#include "../String.h" #include "../concurrent/ConcurrentQueue.h" #include <format> // IWYU pragma: keep @@ -47,6 +46,14 @@ class CRU_BASE_API Logger : public Object2 { } void Log(LogInfo log_info); + template <typename... Args> + void FormatLog(LogLevel level, std::string tag, + std::string_view message_format, Args&&... args) { + // Clang is buggy in consteval, so we can't use std::format for now. + Log(level, std::move(tag), + std::vformat(message_format, std::make_format_args(args...))); + } + private: concurrent::ConcurrentQueue<LogInfo> log_queue_; @@ -87,18 +94,18 @@ class CRU_BASE_API LoggerCppStream : public Object2 { } // namespace cru::log -#define CRU_LOG_TAG_DEBUG(...) \ - cru::log::Logger::GetInstance()->Log(cru::log::LogLevel::Debug, kLogTag, \ - std::format(__VA_ARGS__)) +#define CRU_LOG_TAG_DEBUG(...) \ + cru::log::Logger::GetInstance()->FormatLog(cru::log::LogLevel::Debug, \ + kLogTag, __VA_ARGS__) -#define CRU_LOG_TAG_INFO(...) \ - cru::log::Logger::GetInstance()->Log(cru::log::LogLevel::Info, kLogTag, \ - std::format(__VA_ARGS__)) +#define CRU_LOG_TAG_INFO(...) \ + cru::log::Logger::GetInstance()->FormatLog(cru::log::LogLevel::Info, \ + kLogTag, __VA_ARGS__) -#define CRU_LOG_TAG_WARN(...) \ - cru::log::Logger::GetInstance()->Log(cru::log::LogLevel::Warn, kLogTag, \ - std::format(__VA_ARGS__)) +#define CRU_LOG_TAG_WARN(...) \ + cru::log::Logger::GetInstance()->FormatLog(cru::log::LogLevel::Warn, \ + kLogTag, __VA_ARGS__) -#define CRU_LOG_TAG_ERROR(...) \ - cru::log::Logger::GetInstance()->Log(cru::log::LogLevel::Error, kLogTag, \ - std::format(__VA_ARGS__)) +#define CRU_LOG_TAG_ERROR(...) \ + cru::log::Logger::GetInstance()->FormatLog(cru::log::LogLevel::Error, \ + kLogTag, __VA_ARGS__) |