From caaa86915d6b0695d9c81162847302532aadfe17 Mon Sep 17 00:00:00 2001 From: Nomango Date: Fri, 17 Jul 2020 18:37:42 +0800 Subject: [PATCH] [deploy] LogProvider supports filter by log level --- src/kiwano/utils/Logger.cpp | 24 +++++++++++++++++++++++- src/kiwano/utils/Logger.h | 24 ++++++++++++++++++------ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/kiwano/utils/Logger.cpp b/src/kiwano/utils/Logger.cpp index 45a383df..692ab4c0 100644 --- a/src/kiwano/utils/Logger.cpp +++ b/src/kiwano/utils/Logger.cpp @@ -74,8 +74,30 @@ public: // // LogProvider // +LogProvider::LogProvider() + : level_(LogLevel::Debug) +{ +} + LogProvider::~LogProvider() {} +void LogProvider::Init() {} + +void LogProvider::Flush() {} + +void LogProvider::Write(LogLevel level, LogBuffer* msg) +{ + if (level < level_) + return; + + this->WriteMessage(level, msg); +} + +void LogProvider::SetLevel(LogLevel level) +{ + level_ = level; +} + #if defined(KGE_PLATFORM_WINDOWS) void SetWindowConsoleColor(std::ostream& os, int foreground, int background) { @@ -566,7 +588,7 @@ void Logger::Write(LogLevel level, std::streambuf* raw_msg) for (auto provider : providers_) { buffer_.pubseekpos(0, std::ios_base::in); - provider->WriteMessage(level, &buffer_); + provider->Write(level, &buffer_); } } diff --git a/src/kiwano/utils/Logger.h b/src/kiwano/utils/Logger.h index 91a1776e..db299874 100644 --- a/src/kiwano/utils/Logger.h +++ b/src/kiwano/utils/Logger.h @@ -149,11 +149,21 @@ class KGE_API LogProvider : public ObjectBase public: virtual ~LogProvider(); - virtual void Init() = 0; + virtual void Init(); + + virtual void Flush(); + + void Write(LogLevel level, LogBuffer* msg); + + void SetLevel(LogLevel level); + +protected: + LogProvider(); virtual void WriteMessage(LogLevel level, LogBuffer* msg) = 0; - virtual void Flush() = 0; +protected: + LogLevel level_; }; /** @@ -169,10 +179,11 @@ public: void Init() override; - void WriteMessage(LogLevel level, LogBuffer* msg) override; - void Flush() override; +protected: + void WriteMessage(LogLevel level, LogBuffer* msg) override; + private: typedef std::ostream&(*ConsoleColor)(std::ostream&); @@ -192,10 +203,11 @@ public: void Init() override; - void WriteMessage(LogLevel level, LogBuffer* msg) override; - void Flush() override; +protected: + void WriteMessage(LogLevel level, LogBuffer* msg) override; + private: std::ofstream ofs_; };