[deploy] LogProvider supports filter by log level

This commit is contained in:
Nomango 2020-07-17 18:37:42 +08:00
parent d1c90ed4b0
commit caaa86915d
2 changed files with 41 additions and 7 deletions

View File

@ -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_);
}
}

View File

@ -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_;
};