2024年1月19日? 内容整理自The Cherno:C++ 系列
--------------------------------------------------------------------------------------------------------------------------------
今天我们要写一个log类,它可以将我们想要的信息打印到控制台----在游戏或者应用程序中,如果我们想知道发生了什么,就可以将事物的状态打印到控制台。
应用程序中的控制台就像一个放信息的地方,我们可以用它来打印出发生了什么,它也可以保证我们的代码在正确地工作。
为什么偏要写“日志类”而不是其他类呢?
因为日志系统可以根据我的需要,在控制台中打印我们想要知道的信息,日志系统对于调试和开发来说非常重要,所以花时间在开发日志系统上,是非常值得的。
日志信息分为几个级别:错误、警告、信息或跟踪。日志设置为警告时,控制台就只会打印警告和错误,而不会打印跟踪信息。
#include <iostream>
class Log{
public:
//0表示错误,1表示警告,2表示信息或跟踪
const int LogLevelError=0;
const int LogLevelWarning=1;
const int LogLevelInfo=2;
private:
//约定加前缀_m表示类内部的私有成员变量
int m_LogLevel=2;//默认情况设置为2,意思是所有的东西都会被打印出来
public:
void SetLevel(int level){
m_LogLevel=level;
//引用类内部的私有成员变量,而level只是局部变量
}
void Error(const char* message){
//只有在level为错误时打印错误的信息
if(m_LogLevel>=LogLevelError)
std::cout<<"[Error]"<<message<<std::endl;
}
void Warn(const char* message){
if(m_LogLevel>=LogLevelWarning)
std::cout<<"[Warning]"<<message<<std::endl;
}
void Info(const char* message){
if(m_LogLevel>=LogLevelInfo)
std::cout<<"[Info]"<<message<<std::endl;
}
};
int main(){
//01.实例化Log
Log log1;
//02.我想制定某种日志级别,这个级别作为一个实际参数,0表示错误,1表示警告,2表示信息或跟踪
log1.SetLevel(log1.LogLevelWarning);//设置日志级别为警告,这意味着只有警告信息才会被打印出来
//03.我可能还会想将该警告信息打印出来
log1.Warn("Facing Uncertainty is Dangerous!!");
//现在我大致知道我想要创造的log类是什么样子了,我应该倒回class去填空。
return 0;
}