在C++中创建记录器类
creating Logger class in C++
我测试类的主要方法说"表达式必须具有类类型",当尝试将枚举传递到函数调用中时,我得到"类型不允许"。
#include <iostream>
#include <string>
using std::string;
using std::cout;
class Logger
{
public:
enum LogLevel { ALL, INFO, WARNING, ERROR, NEEDED };
private:
LogLevel Errorlevel = ALL;
string LogLevelNames[5] = { "ALL","INFO","WARNING", "ERROR", "NEEDED" };
public:
Logger(LogLevel level)
{
Errorlevel = level;
if (Errorlevel <= INFO)
{
cout << "[" << LogLevelNames[Errorlevel] << "]: " << "LOGGER set to: " << LogLevelNames[Errorlevel] << std::endl;
}
}
~Logger()
{
if (Errorlevel <= WARNING)
{
cout << "[" << LogLevelNames[Errorlevel] << "]:" << " LOGGER destroyed" << std::endl;
}
}
void log(LogLevel level, string message)
{
if (Errorlevel <= level)
{
cout << "[" << LogLevelNames[level] << "]: " << message << std::endl;
}
}
};
int main()
{
Logger logger(Logger::LogLevel WARNING); // no error
logger.log(Logger::LogLevel ERROR, "test ERROR"); //errors
logger.log(Logger::LogLevel INFO, "test INFO"); //errors
system("PAUSE");
}
我相当确定这是由于我自己的经验不足造成的,但我不确定如何改进这段代码。
您在
初始化Logger
时缺少一些作用域,这导致编译器无法解析您对log()
的调用。像这样修复它。
int main()
{
Logger logger(Logger::WARNING);
logger.log(Logger::ERROR, "test ERROR");
logger.log(Logger::INFO, "test INFO");
return 0;
}
相关文章:
- 使用std::multimap迭代器创建std::list
- 创建 Spdlog 异步文件记录器时遇到困难
- 如何使用 C 指针的自定义删除器创建unique_ptr?
- 如何将自定义记录器与websocketpp一起使用?
- 在C++中隐藏键盘记录器的控制台窗口
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 麻烦得到提升::记录器编译
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 多态记录器(虚拟模板化函数?
- 设置提升记录器的线程名称
- Boost Log的琐碎记录器"lazy evaluation"是如何工作的?
- boost::log 设置"Channel"通道记录器中的属性
- 区分键盘记录器中的密码和其他类型的键盘输入
- 记录器的流界面,C
- 如何监控Android和iOS上的所有击键操作,如Windows键盘记录器
- 如何声明和定义 Poco 记录器
- 在C++中创建记录器类
- 如何创建优化的图形多色记录器
- NT内核记录器会话日志未创建
- 是否可以创建许多升压记录器的实例