[C++]——同步异步日志系统(4)
同步异步日志系统
- 一、日志等级模块设计
- 二、日志消息类设计
一、日志等级模块设计
- 定义出日志系统所包含的所有日志等级分别为:(7个等级)
- UNKNOW=0,未知等级的日志
- DRBUG ,调试等级的日志
- INFO ,提示等级的日志
- WARN ,警告等级的日志
- ERROR ,错误等级的日志
- FATAL ,致命错误等级的日志
- OFF,关闭所有⽇志输出
每一个项目中都会设置一个默认的日志输出等级,只有输出的日志等级大于等于默认限制等级的时候才可以进行输出。
- 提供一个接口,将对应等级进行枚举,转化为一个对应的字符串
- 首先需要把架子搭起来,功能先声明好。
/* 1.定义枚举类,枚举出日志等级 2.提供转换接口,将枚举转换位对应的字符串 */ namespace logslearn{ //等级模块 class level{ public: //定义枚举类 enum class value{}; //转换接口 static const char *tostring(level::value level); }; }
- 其次在实现各个功能。
/* 1.定义枚举类,枚举出日志等级 2.提供转换接口,将枚举转换位对应的字符串 */ namespace logslearn { // 等级模块 class loglevel { public: // 定义枚举类 enum class value { UNKNOW = 0, // 未知等级的日志 DRBUG, // 调试等级的日志 INFO, // 提示等级的日志 WARN, // 警告等级的日志 ERROR, // 错误等级的日志 FATAL, // 致命错误等级的日志 OFF, // 关闭所有⽇志输出 }; // 转换接口 static const char *tostring(loglevel::value level) { switch (level) { case loglevel::value::DRBUG: return "DRBUG"; case loglevel::value::INFO: return "INFO"; case loglevel::value::WARN: return "WARN"; case loglevel::value::ERROR: return "ERROR"; case loglevel::value::FATAL: return "FATAL"; case loglevel::value::OFF: return "OFF"; } // 未知等级的打印 return "UNKNOW"; } }; }
- 我们每次编写完一个模块后,要对其进行单元测试,确保程序的准确性。
//测试代码 #include "util.hpp" #include "level.hpp" int main() { //等级模块测试 std::cout //日志消息模块 struct LogMsg { time_t _ctime;//日志产生的时间戳 loglevel::value _level;//日志产生的等级 size_t _line;//行号 std::thread::id _tid;//线程id std::string _file;//源文件 std::string _logger;//日志器名称 std::string _payload;//有效消息数据 //初始化列表 LogMsg(loglevel::value leven,size_t line,const std::string file,const std::string logger,const std::string msg): _ctime(logsLearn::util::Data::now()), _level(leven), _line(line), _tid(std::this_thread::get_id()), _file(file), _logger(logger), _payload(msg) {} }; } //消息类模块构造 logslearn::LogMsg(logslearn::loglevel::value::DRBUG, 123,"main.c","root","我错了"); std::cout
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。