diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-08-18 19:03:44 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-08-18 19:03:44 +0800 |
commit | 09a0b595f26b83477826b1f2e49bdd4d9a4bcee1 (patch) | |
tree | 30d72345bdea998d0651dcb4841670e0f3f9a543 /include/cru/base/log/Logger.h | |
parent | b53780b2106b0f233c48e27653336b8a629ca486 (diff) | |
download | cru-09a0b595f26b83477826b1f2e49bdd4d9a4bcee1.tar.gz cru-09a0b595f26b83477826b1f2e49bdd4d9a4bcee1.tar.bz2 cru-09a0b595f26b83477826b1f2e49bdd4d9a4bcee1.zip |
Add logger cpp stream.
Diffstat (limited to 'include/cru/base/log/Logger.h')
-rw-r--r-- | include/cru/base/log/Logger.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/cru/base/log/Logger.h b/include/cru/base/log/Logger.h index 498ee1b4..f77296e1 100644 --- a/include/cru/base/log/Logger.h +++ b/include/cru/base/log/Logger.h @@ -8,6 +8,7 @@ #include <memory> #include <mutex> #include <thread> +#include <utility> #include <vector> namespace cru::log { @@ -69,6 +70,36 @@ class CRU_BASE_API Logger : public Object { std::thread log_thread_; }; + +class CRU_BASE_API LoggerCppStream : public Object2 { + public: + explicit LoggerCppStream(Logger* logger, LogLevel level, String tag); + ~LoggerCppStream() override = default; + + LoggerCppStream WithLevel(LogLevel level) const; + LoggerCppStream WithTag(String tag) const; + + private: + void Consume(StringView str); + + public: + LoggerCppStream& operator<<(StringView str) { + this->Consume(str); + return *this; + } + + template <typename T> + LoggerCppStream& operator<<(T&& arg) { + this->Consume(ToString(std::forward<T>(arg))); + return *this; + } + + private: + Logger* logger_; + LogLevel level_; + String tag_; +}; + } // namespace cru::log #define CRU_LOG_TAG_DEBUG(...) \ |