【项目二】C++高性能服务器开发——日志系统(日志器,日志级别,日志事件)

知识点备忘录

其实也没啥

操作记录

在乌邦图上写的,先是模仿sylar创建了目录
在这里插入图片描述
进入sylar文件夹,有今天写的log.h头文件
在这里插入图片描述
其中log_test.cpp是为了测试log.h能否正常运行建的,只是个测试文件
log.h写了三个类,日志级别,日志事件,日志器
log.h头文件如下:

#ifndef __SYLAR_LOG_H_
#define __SYLAR_LOG_H_#include <string>
#include <stdint.h>
#include <memory>
#include <iostream>//日志级别
class LogLevel{
public:enum Level{UNKNOW = 0,//未知DEBUG = 1,//调试INFO = 2,//普通WARN = 3,//警告ERROR = 4,//错误FATAL = 5//灾难};
};//日志事件
//通常包含日志发生的具体信息
class LogEvent{
public://一个智能指针typedef std::shared_ptr<LogEvent> ptr;//构造函数LogEvent(LogLevel::Level level//日志级别//日志发生源代码文件名,日志发生的源代码中的行号,自程序启动以来的时间, const char* file, int32_t line, uint32_t elapse//产生日志事件的线程ID,产生日志事件的协程ID,日志事件的时间戳, uint32_t thread_id, uint32_t fiber_id, uint64_t time);//成员函数//1.返回日志发生的源文件名const char* getFile() const {return m_file;}//2.返回日志发生的代码行号int32_t getLine() const {return m_line;}//3.返回日志事件发生的事件,单位msuint32_t getElapse() const {return m_elapse;}//4.返回产生日志事件的线程IDuint32_t getThreadId() const {return m_threadId;}//5.返回产生日志事件的协程IDuint32_t getFiberId() const {return m_fiberId;}//6.返回日志事件的时间戳uint64_t getTime() const {return m_time;}//7.返回日志事件的级别LogLevel::Level getLevel() const {return m_level;}private:const char* m_file = nullptr;//表示日志事件的源文件名int32_t m_line = 0;//表示在源文件中的行号uint32_t m_elapse = 0;//表示程序启动到现在的msuint32_t m_threadId = 0;//表示产生日志事件的线程IDuint32_t m_fiberId = 0;//表示产生日志事件的协程IDuint64_t m_time;//表示日志事件产生的时间戳LogLevel::Level m_level;//表示日志级别
};//日志构造函数的实现
LogEvent::LogEvent(LogLevel::Level level, const char* file, int32_t line, uint32_t elapse, uint32_t thread_id, uint32_t fiber_id, uint64_t time):m_level(level),m_file(file),m_line(line),m_elapse(elapse),m_threadId(thread_id),m_fiberId(fiber_id),m_time(time){
}//日志器
class Logger{
public://定义智能指针,操作Logger的对象typedef std::shared_ptr<Logger> ptr;//构造函数//未指定则给个默认名称root,这里引用生为了避免不必要的拷贝操作,使用const是为了规定这个名称在内部不会被改变Logger(const std::string& name = "root");//成员函数const std::string& getName() const {return m_name;}LogLevel::Level getLevel() const {return m_level;}void setLevel(LogLevel::Level val) {m_level = val;}//定义一个输出日志的方法,传入想要查看的最大日志级别void log(LogEvent::ptr event);
private://m_开头生一个私有变量的规范std::string m_name;//日志器能输出的最大日志级别LogLevel::Level m_level;
};
//实现构造函数
Logger::Logger(const std::string& name):m_name(name)//这里指定日志器一个自身默认级别是DEBUG,m_level(LogLevel::DEBUG){
}
//实现成员函数log()即输出方法
void Logger::log(LogEvent::ptr event){if(event->getLevel() >= m_level)std::cout << "日志输出模拟" << std::endl;
}#endif

log_test.cpp文件如下

#include "log.h"
//测试
int main(int argc, char** argv){//创建一个日志事件LogEvent::ptr event(new LogEvent(LogLevel::WARN, 0, 1, 2, 3, 4, time(0)));Logger::ptr lg(new Logger("hkq"));lg->log(event);lg->setLevel(LogLevel::ERROR);lg->log(event);return 0;
}

正常打印输出了日志输出模拟,运行成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP一站式解决方案高级房产系统小程序源码

一站式解决方案&#xff0c;高级房产系统让房产管理更轻松 &#x1f3e0;【开篇&#xff1a;告别繁琐&#xff0c;迎接高效房产管理新时代】&#x1f3e0; 你是否还在为房产管理的繁琐流程而头疼&#xff1f;从房源录入、客户咨询到合同签订、售后服务&#xff0c;每一个环节…

【2024数模国赛赛题思路公开】国赛C题第二套思路丨附可运行代码丨无偿自提

2024年国赛C题第二套解题思路 第一问&#xff1a;2024~2030年农作物的最优种植方案 【问题分析】 题目要求为某乡村在2024~2030年制定农作物的最优种植方案&#xff0c;目的是最大化收益&#xff0c;并需考虑两种销售情况&#xff1a; 1. 超过预期销售量的部分滞销&#xff0…

【LeetCode】05.最长回文子串

题目要求 解题思路 这一类型&#xff08;回文子串&#xff09;主要有两种解决方法&#xff0c;一种是动态规划&#xff0c;另一种是中心拓展算法。 动态规划&#xff1a; 本质问题就是在i-j区间是不是回文的。这样的话我们在 i 和 j 位置的值相等时&#xff0c;判断如下三种情…

SQL-多表查询

1、多表关系 一对多、多对一&#xff1a;在多的一方建立外键&#xff0c;指向一的一方。 多对多&#xff1a;至少两个外键&#xff0c;通过中间表维护。 一对一 2、多表查询概述 3、内连接 4、外连接 5、自连接 6、联合查询 7、子查询 8、多表查询案例 # 1、多表关系 #…

语音测试(一)ffmpeg视频转音频

视频转音频 下载ffmpeg工具进入bin目录cmd进入控制台输入命令 ffmpeg.exe -i ./视频.mp4 ./音频.wav命令说明 ffmpeg -i input.mp4 output.mkv FFmpeg 可能会尝试自动选择合适的编码器对视频和音频进行重新编码&#xff0c;以便适应 MKV 格式的要求ffmpeg -i input.mp4 -c c…

linux 内核代码学习(八)

总体目标&#xff1a;由于fedora10 linux发行版中自带的linux2.6.xx内核源码规模太庞大了&#xff0c;对于想通读内核源码的爱好者来说太困难了&#xff0c;因此选择了linux2.4.20内核来进行测试&#xff08;最终是希望能够实现linux1.0内核的源码完全编译和测试&#xff09;。…

Rust的数据类型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学&#xff0c;之一 -CSDN博客 Rust到底值不值得学&#xff0c;之二-CSDN博客 3.5 数据类型的定义和分类 在Rust…

亚马逊逆袭:我是怎么让店铺从平庸到高增长的

今年的亚马逊Prime会员大促即将到来&#xff0c;对于各位卖家来说&#xff0c;这不仅代表着提升店铺主推商品排名、加速商品销量增长的机会&#xff0c;还意味着为年末其他大促活动提前引流获客的大好时机&#xff0c;绝对不容错过&#xff01; 如果你的亚马逊店铺还是表现平平…

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)

DNN学习平台&#xff08;GoogleNet、SSD、FastRCNN、Yolov3&#xff09; 前言相关介绍1&#xff0c;登录界面&#xff1a;2&#xff0c;主界面&#xff1a;3&#xff0c;部分功能演示如下&#xff08;1&#xff09;识别网络图片&#xff08;2&#xff09;GoogleNet分类&#xf…

【基础】Three.js 自定义几何体和复制几何体

通过自定义顶点数据&#xff0c;可以创建任意的几何体。像threejs的长方体BoxGeometry、球体SphereGeometry等几何体都是基于BufferGeometry类构建的&#xff0c;它表示一个没有任何形状的空几何体。 1. 自定义点模型 通过javascript 类型化数组 Float32Array创建一组xyz坐标…

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…

IMU腕带评估轮椅用户运动健康

近期&#xff0c;美国的研究团队利用惯性测量单元&#xff08;IMU&#xff09;和机器学习来准确评估手动轮椅使用者的运动健康状况&#xff0c;这在康复训练和慢性病管理领域具有广阔的应用前景。 研究小组将运用高性能的IMU传感器固定到轮椅使用者佩戴的手腕带上&#xff0c;用…

分享一套外链系统,付费进群系统

本系统特点&#xff0c;活码系统以及卡片系统&#xff0c;付费进群系统 分享一套外链系统其中带付费进群系统插件&#xff0c;前端做了美化

第90集《大佛顶首楞严经》

《大佛顶如来密因修正了义诸菩萨万行首楞严经》。监院法师慈悲&#xff0c;诸位法师&#xff0c;诸位同学&#xff0c;阿弥陀佛&#xff01; 请大家打开讲义197面 子一、现化表法 诵持『楞严神咒』在整个修学《首楞严王三昧》的过程&#xff0c;它所扮演的角色有两个&#x…

记录一下idea的一些使用技巧和遇到的异常(持续更新)

技巧 自己的模板——live template 有些代码在项目中通常会被用到或会被重复使用&#xff0c;可以自己写一个模板存起来&#xff0c;要用的时候用快捷键生成就可以了。 在这里选择生效范围 现在&#xff0c;就有我们自己的模板了&#xff0c;一回车就自动生成 idea的全局配置…

蓄水池漂浮物识别摄像机

蓄水池是重要的水资源储备设施&#xff0c;但常常会受到漂浮物的影响&#xff0c;影响水质和使用效果。为了及时监测和清理蓄水池中的漂浮物&#xff0c;蓄水池漂浮物识别摄像机 被广泛应用于各类水库、湖泊等场所。这种摄像机结合了图像识别技术和人工智能算法&#xff0c;能够…

照片信息的读取与分类(1)

通过Python的各种模块我们可以很方便的获取到文件的各种属性数据&#xff0c;比如文件修改时间、文件大小或是本节课获取到的照片拍摄时间等。获取到了这些数据后&#xff0c;我们就可以对文件按照需求进行移动、改名甚至删除等操作。配合Python批量处理文件的优势&#xff0c;…

elementUI table 给表头添加气泡显示(鼠标悬浮显示注释)

elementUI table 给表头添加气泡显示&#xff08;鼠标悬浮显示注释&#xff09; 前言&#xff1a;文档显示&#xff1a;&#xff08;使用插槽&#xff0c;我看看到底是怎么个事儿&#xff09;文档代码:修改后的效果&#xff1a;页面效果&#xff1a; 前言&#xff1a; 公司出现…

【ACM出版】2024年第四届工商管理与数据科学国际学术会议 (BADS 2024,10月25-27)

2024年第四届工商管理与数据科学国际学术会议(BADS 2024)将于2024年10月25-27日在中国重庆召开&#xff0c;大会由喀什大学支持。 在当今全球化与数字化迅速发展的时代&#xff0c;工商管理与数据科学作为推动经济增长和技术进步的重要力量&#xff0c;正以前所未有的速度交叉融…

骨传导耳机哪款好?精选五款热门骨传导耳机分享让你避免踩雷

目前在市面当中&#xff0c;骨传导耳机被称之为是黑科技耳机&#xff0c;骨传导耳机拥有很多优势&#xff0c;在听歌时不需要入耳&#xff0c;不会伤耳朵。随着骨传导耳机品牌的不断发展&#xff0c;人们在选购骨传导耳机时&#xff0c;也会觉得非常困难&#xff0c;可能一不小…