当前位置:主页 > c/c++教程 > C++ plog日志

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

发布:2023-03-03 14:30:01 59


为网友们分享了相关的编程文章,网友戴雅蕊根据主题投稿了本篇教程内容,涉及到C++、plog日志、C++、plog、C++ plog日志相关内容,已被140网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

C++ plog日志

一、下载plog

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

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

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

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

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

将头文件路径包含进来

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

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

mian函数中加入头文件

#include  
#include 

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

三、使用plog日志库

简单用法

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

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

// 参数一使用的枚举:
/*
enum Severity
{
    none = 0,
    fatal = 1,        // 致命错误
    error = 2,        // 错误
    warning = 3,    // 警告
    info = 4,        // 通知
    debug = 5,        // 调试
    verbose = 6
};
*/

参数一是日志的类型,一般用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 
#include 
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 
#include 
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日志内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • Java C++题解 leetcode第k个数实例

    发布:2023-03-02

    这篇文章主要为大家介绍了Java C++题解 leetcode第k个数实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • C++利用ImGUI绘制D3D外部菜单

    发布:2023-03-03

    ImGUI 它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用。本文将利用ImGUI绘制D3D外部菜单,需要的可以参考一下


  • C++下如何将TensorFlow模型封装成DLL供C#调用

    发布:2023-03-13

    这篇文章主要介绍了C++下如何将TensorFlow模型封装成DLL供C#调用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • C++如何将字符串颠倒输出

    发布:2023-03-09

    这篇文章主要介绍了C++如何将字符串颠倒输出,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • C/C++指针和取地址的方法

    发布:2022-04-01

    C/C++指针和取地址的方法,需要的朋友可以参考一下


  • C++如何去除cpp文件的注释详解

    发布:2023-03-03

    在日常工作中,我们会给c/c++代码写上一些注释,但是往往为了保持最终的代码尽可能小,我们需要删除注释,手动删除太缓慢了,下面这篇文章主要给大家介绍了关于C++如何去除cpp文件注释的相关资料,需要的朋友可以参考下


  • C++ Boost Variant示例超详细讲解

    发布:2023-03-12

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称


  • C++标准模板库函数sort的那些事儿

    发布:2022-07-11

    为网友们分享了关于C++的教程,sort函数是标准模板库的函数,已知开始和结束的地址即可进行排序,可以用于比较任何容器(必须满足随机迭代器),任何元素,任何条件,执行速度一般比qsort要快


网友讨论