广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ plog日志使用方法介绍
  • 738
分享到

C++ plog日志使用方法介绍

2024-04-02 19:04:59 738人浏览 独家记忆
摘要

目录一、下载plog二、在VS中搭建plog编译环境三、使用plog日志库四、QtCreator使用plog日志库五、总结一、下载plog 下载链接:https://GitHub.c

一、下载plog

下载链接:https://GitHub.com/SergiusTheBest/plog/releases

下载后解压出来,就得到了我们需要的头文件了

二、在VS中搭建plog编译环境

在vs中新建项目,根据以下图片步骤将plog头文件包含到项目中去

将include文件夹拷贝到项目路径

将头文件路径包含进来

右键项目 - 属性 - Vc++目录 - 包含目录

将项目路径中的include路径包含进来

mian函数中加入头文件

#include <plog/Log.h> 
#include <plog/Initializers/RollingFileInitializer.h>

至此,plog的编译环境已经整好了,可以使用它了。

三、使用plog日志库

简单用法

使用init函数进行打开文件和初始化

plog::init(plog::debug, "日志.txt");

// 参数一使用的枚举:

参数一是日志的类型,一般用plog::debug或plog::verbose即可,参数二是日志路径和文件名;当然还有参数三和参数四,将在下面例子讲解。

初始化之后,就可以使用宏LOGD或PLOG_DEBUG或PLOG(plog::debug),将日志信息写入日志文件中了。

LOGD << "日志打印";
LOGD << "日志Debug" << 123 << "test" << 3.1415926;

编译运行,就会发现在项目路径中多出了一个日志.txt的文件,这个就是我们这个项目中的日志文件。

进入就可以看到刚刚在代码中写入的日志信息了

日志中有时间信息,还有此日志是什么类型的(图上的是DEBUG类型),此条日志信息是在那个函数中进行写入的(图上显示的是main函数,也是正确的),最后是日志信息!

当然,也还可以在函数中使用,例如新建一个函数,在函数中写日志信息

void testLog() {
	LOGD << "testLog()";
}

然后接着调用此函数

plog::init(plog::debug, "日志.txt");
LOGD << "日志打印";
LOGD << "日志Debug" << 123 << "test" << 3.1415926;
testLog();
LOGD << "函数结束";

编译运行后日志文件

已经将日志信息写入文件中了!

指定日志文件大小和个数

// 参数一:日志类型        参数二:日志文件名        参数三:日志文件大小        参数四:支持多少个日志文件
plog::init(plog::debug, "Hello.txt", 1024, 5);    // 每个文件最大1024,最多5个文件,超过开始覆盖

1024是指单个日志文件只能是1024大小左右;5是指该项目只会有5个日志文件,如果日志数据量大,超过了限制,那么会对前面的日志文件进行覆盖。

写一个例子,往日志文件中写入七十条日志,看看是什么效果

int index = 0;
while (index < 70) {
	LOGD << "测试日志:" << index++;
}

编译运行后

生成了5个日志文件Hello.1.txt、Hello.2.txt、Hello.3.txt、Hello.4.txt、Hello.txt

根据日志打印的数字可以看出,Hello.4.txt是最开始先使用的日志文件,刚开始名字应该是Hello.txt才对的,后来因为他的存储大小超过了1024,所以plog会将他的文件名进行更改为Hello.1.txt,然后继续创建一个Hello.txt的文件进行存储日志信息;当文件大小又超过1024时,会首先将Hello.1.txt名字更改为Hello.2.txt,然后才会将Hello.txt更改为Hello.1.txt;然后继续创建一个Hello.txt的文件进行存储日志信息…

依此类推,最终得到上图效果!

当超过五个日志文件大小存储时,会对前面刚开始写入的日志信息进行覆盖

可以将上面的index判断次数修改为85,编译运行

int index = 0;
while (index < 85) {
	LOGD << "测试日志:" << index++;
}

之前的 Hello.4.txt 文件已经被删除了,然后被之前的Hello.3.txt给替换掉了,前面的一样会往后进行替换,最后就可以腾出新的文件Hello.txt进行继续存储了!

使用时间作为文件名

我就比较喜欢这种命名方式了

也就是将当天的年月日作为日志的文件名,这样运行程序,每天也只会生成一个日志文件,记录当天的日志信息,也方便后期查询!

#include <string>
#include <time.h>
std::string getCurrentTime(std::string& year, std::string& month, std::string& day, std::string& hour, 	std::string& min, std::string& sec) {
	// 获取系统时间 - 年月日时分秒
	time_t _time;
	struct tm* target_time;
	time(&_time);
	target_time = localtime(&_time);
	year = std::to_string(target_time->tm_year + 1900);
	month = target_time->tm_mon + 1 > 9 ? std::to_string(target_time->tm_mon + 1) : "0" + std::to_string(target_time->tm_mon + 1);
	day = target_time->tm_mday > 9 ? std::to_string(target_time->tm_mday) : "0" + std::to_string(target_time->tm_mday);
	hour = target_time->tm_hour > 9 ? std::to_string(target_time->tm_hour) : "0" + std::to_string(target_time->tm_hour);
	min = target_time->tm_min > 9 ? std::to_string(target_time->tm_min) : "0" + std::to_string(target_time->tm_min);
	sec = target_time->tm_sec > 9 ? std::to_string(target_time->tm_sec) : "0" + std::to_string(target_time->tm_sec);
	return year + month + day + hour + min + sec;
}
int main(void) {
	std::string year, month, day, hour, min, sec;
	getCurrentTime(year, month, day, hour, min, sec);
	std::string logName = year + month + day + ".txt";
	plog::init(plog::verbose, logName.c_str());
	LOGD << "时间日志名字";
	int index = 0;
	while (index < 85) {
		LOGD << "测试日志:" << index++;
	}
	return 0;
}	

编译运行

根据当天的日期创建了日志

四、QTCreator使用plog日志库

将plog文件夹拷贝到QT项目中去,注意,这里并没有包含那个include文件夹

然后右键项目,选择Add Existing Directory…

勾选上plog,点击确定

这样plog模块就添加进来了

然后在QT项目中添加头文件就可以使用了

#include <plog/Log.h>
#include <plog/Initializers/RollingFileInitializer.h>
plog::init(plog::verbose, "test.txt");
LOGD << QString::fromStdString("时间日志名字");
int index = 0;
while (index < 85) {
    LOGD << QString::fromStdString("测试日志:") << index++;
}

可以使用!

五、总结

其实plog还有很多用高效的用法,在文件夹samples中有案例,有兴趣的可以去看看!

到此这篇关于C++ plog日志使用方法介绍的文章就介绍到这了,更多相关C++ plog日志内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++ plog日志使用方法介绍

本文链接: https://www.lsjlt.com/news/168968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++ plog日志使用方法介绍
    目录一、下载plog二、在VS中搭建plog编译环境三、使用plog日志库四、QTCreator使用plog日志库五、总结一、下载plog 下载链接:https://github.c...
    99+
    2022-11-13
  • C++第三方日志库Glog的安装与使用介绍
    目录一、glog介绍二、glog下载三、环境介绍三、glog的编译详解3.1 利用CMake进行编译,生成VS解决方案3.2 利用VS对项目进行编译四、glog的基本使用4.1 创建...
    99+
    2022-11-13
  • .NET日志框架Nlog使用介绍
    目录快速安装快速配置快速使用详解配置添加支持Console输出输出至CSV文件配置日志大小配置日志分级配置生成规则日志过滤器条件语言条件函数NLog是一个基于.NET平台编写的类库,...
    99+
    2022-11-13
  • C++堆栈的使用方法介绍
    本篇内容介绍了“C++堆栈的使用方法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在开发这个大的领域,C++堆栈是一个不容忽视的概念,但...
    99+
    2023-06-17
  • C#中Dispose和Finalize方法使用介绍
    一、前言 在C#中,由于有了垃圾回收机制的支持,对象的析构和以前的C++有了很大的不同,这就要求程序员在设计类型的时候,充分理解.NET的机制,明确怎样利用Dispose方法和Fin...
    99+
    2022-11-13
  • C#调用WebService的方法介绍
    一、前言 在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创...
    99+
    2022-11-13
  • C++逐步介绍日期类的使用
    目录头文件详细步骤第一步第二步总代码我们今天实现一个简单的计算日期 我们这里先给出头文件,后面一个一个解释 头文件 #pragma once #include<iostrea...
    99+
    2022-11-13
  • JavaScriptreduce方法使用方法介绍
    目录1. reduce方法的使用2. reduce数组的使用场景2.1 扁平化数组2.2 数组去重2.3 计算数组最大/最小值2.4 数组求和2.5 计算数组中元素的出现次数3. 操...
    99+
    2022-11-13
    JavaScript reduce JS reduce
  • C#使用Log4net添加日志记录的方法
    目录一、Log4net二、使用日志库1. 添加库2. 配置log4net3. 使用log4net4. 结果一、Log4net 官方网站:https://logging.apache....
    99+
    2022-11-13
  • C#使用log4net记录日志的方法步骤
    一、Nuget安装log4net --> Install-Package log4net 二、在AssemblyInfo.cs文件中添加log4net.dll的参数。 [as...
    99+
    2022-11-12
  • C#委托方法Func()中GetInvocationList()方法的用法介绍
    在日常使用委托时,有以下常用方法 方法名称说明 Clone  创建委托的浅表副本。 GetInvocationList  按照调用顺序返回此多...
    99+
    2022-11-12
  • 使用Aop的方式实现自动日志记录的方式详细介绍
    目录34、使用Aop的方式实现自动日志记录采用第一种方式:1、第一步、定义一个注解:2、第二步、编写一个切面3、使用自定义注解34、使用Aop的方式实现自动日志记录 自动日志记录的实...
    99+
    2022-11-13
  • C语言rand和srand函数使用方法介绍
    目录前言随机数的本质重新播种生成一定范围内的随机数连续生成随机数前言 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌。 在C语言中...
    99+
    2023-02-11
    C语言rand和srand C语言rand方法 C语言srand方法
  • C ++迭代器iterator在string中使用方法介绍
    目录一、正向迭代器二、正向迭代器(只读数据)三、反向迭代器四、反向迭代器(只读)五、auto来替换这些特别长类型名一、正向迭代器 【例子】 //正向迭代器 void test1()...
    99+
    2022-11-13
    C ++迭代器iterator C ++迭代器在string使用
  • Kotlin ContentProvider使用方法介绍
    目录1、注册ContentProvider2、内容URI内容URI的标准格式通配符3、创建自己的ContentProvider4、访问其他程序中的数据1、注册ContentProvi...
    99+
    2022-11-13
  • AndroidLeakCanary的使用方法介绍
    目录1.LeakCanary 如何自动初始化2.LeakCanary如何检测内存泄漏2.1LeakCanary初始化时做了什么2.2LeakCanary如何触发检测2.3LeakCa...
    99+
    2022-11-13
  • String.format()方法的使用介绍
    String.format() 方法中的 % 符号用作占位符,用于将值插入字符串中。它用于使用特定值(例如整数、浮点数或字符串)格式化字符串。% 符号后面跟着一个字母,指定要插入的值的类型,例如 %d 表示整数,%s 表示字符串。要插入的...
    99+
    2023-09-07
    java 开发语言 spring servlet
  • mysqldump的使用方法介绍
    这篇文章主要介绍了mysqldump的使用方法介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1、说明mysqldump在库被删除的情况下,无法直接从文件恢复,需要手动新建同名库,才能从文件恢复数据。2、语法shell...
    99+
    2023-06-15
  • Java日志的使用方法
    这篇文章将为大家详细讲解有关Java日志的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4....
    99+
    2023-06-14
  • ReactHooks使用方法全方位介绍
    目录hooks介绍useState(保存组件状态)useEffect()useCallback(记忆函数)useMemo(记忆组件)useRef(保存引用值)useReducerus...
    99+
    2023-03-19
    React Hooks React Hooks方法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作