一段关于日志三个等级的代码,日志等级分为 Error、Warning、Info;下面是一段很糟的代码:
#include<iostream>
class Log
{
public:
enum Level
{
// 虽然默认开始是0,但是我这里赋值为0增加了代码的可读性
LevelError = 0, Warning, Info
};
private:
// 默认情况下设置m_LogLevel为所有信息都要被打印
Level m_LogLevel = Info;
public:
// 设置Level类型类限制你的代码,只允许设置为Level的枚举值
void SetLevel(Level level)
{
m_LogLevel = level;
}
void Error(const char* message)
{
if (m_LogLevel >= LevelError)
std::cout << "[ERROR]: " << message << std::endl;
}
void Warn(const char* message)
{
if (m_LogLevel >= Warning)
std::cout << "[WARNING]: " << message << std::endl;
}
void Info(const char* message)
{
if (m_LogLevel >= Info)
std::cout << "[INFO]: " << message << std::endl;
}
};
int main()
{
Log log;
// 这里报错,因为E
log.SetLevel(Log::Error);
log.Warn("Hello!");
log.Error("Hello!");
std::cin.get();
}