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

目录
  • 一、下载plog
  • 二、在VS中搭建plog编译环境
  • 三、使用plog日志库
  • 四、QTCreator使用plog日志库
  • 五、总结

一、下载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");

// 参数一使用的枚举:
/*
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 <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日志内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++第三方日志库log4cplus的安装与使用配置教程

    目录 一.log4cplus介绍 二.log4cplus下载 三.log4cplus配置 3.1打开解决方案 3.2进行相应设置 3.3目标程序的配置 四.测试Demo 一.log4cplus介绍 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统,受Apache Software License保护,作者是Tad E. Smith. log4cplus具有线程安全.灵活.以及多粒度控制的特点,通过将日志划分优先级使其可以面向程序调试.运行.测试.和维护等全生命周

  • C++删除指定文件夹下N天及之前日志文件的方法

    本文实例讲述了C++删除指定文件夹下N天及之前日志文件的方法.分享给大家供大家参考.具体如下: // 功能:删除nDays天及之前的日志文件 // @nDays: 0-不删除日志,3-删除3天及之前的日志(保留今天.昨天.前天的日志) ... void CRecordLog::ClearLog(UINT nDays) // 删除N天前的日志 { if (nDays > 0) { WIN32_FIND_DATA FindFileData; CString sAllFile = m_sLogFold

  • C++第三方日志库Glog的安装与使用介绍

    目录 一.glog介绍 二.glog下载 三.环境介绍 三.glog的编译详解 3.1利用CMake进行编译,生成VS解决方案 3.2利用VS对项目进行编译 四.glog的基本使用 4.1创建VS项目 4.2将glog相关文件包含在项目中 4.3编写代码进行测试 4.4测试代码2 五.代码详解 5.1define 5.2include 参考: 一.glog介绍 Google Logging(glog)是一个实现应用程序级日志记录的C++98库.该库提供了基于C++风格流和各种辅助宏的日志API.

  • C++ Log日志类轻量级支持格式化输出变量实现代码

    CLog 头 代码很简单 如果需要的直接Ctrl+C ----Ctrl+V 即可 #ifndef __CLOG__ #define __CLOG__ #include <windows.h> #include <string> #include <fstream> #include <tchar.h> #include <ctime> class CLog { public: CLog(); CLog(const std::string LogF

  • C++日志记录类实例解析

    本文所述实例是从一个Red Hat开源项目里面扒出来的,非常实用!读者还可以根据自身需求加以修改!完整源码如下: Log.h文件部分: #ifndef __LOG_H__ #define __LOG_H__ #include <stdio.h> #include <tchar.h> #include <crtdbg.h> #include <windows.h> #include <time.h> #include <sys/timeb.h

  • C++语言编写写日志类

    使用C++语言编写写日志类,支持写日志级别设置.支持多线程.支持可变形参表写日志. 主要提供以下接口: 1.设置写日志的级别 2.写关键日志信息 3.写错误日志信息 4.写警告日志信息 5.写一般日志信息 #ifndef COMMAND_DEFINE_H #define COMMAND_DEFINE_H //日志级别的提示信息 static const char * KEYINFOPREFIX = " Key: \n"; static const char * ERRORPREFIX

  • C++第三方日志库Glog基本语法详解

    目录 1.错误类型 2.输出日志 3.条件输出 4.常用函数 5.常用参数(Flags) 6.日志类型 上文(C++第三方日志库Glog的安装与使用超详解(精选))介绍了glog的安装.配置与基本使用案例,本文将详细介绍一下glog的基本语法,结合上文一起食用效果更佳哦~ 1.错误类型 glog有四个错误级别,枚举如下: enum SeverityLevel { google::INFO = 0, google::WARNING = 1, google::ERROR = 2, google::F

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

    目录 一.下载plog 二.在VS中搭建plog编译环境 三.使用plog日志库 四.QTCreator使用plog日志库 五.总结 一.下载plog 下载链接:https://github.com/SergiusTheBest/plog/releases 下载后解压出来,就得到了我们需要的头文件了 二.在VS中搭建plog编译环境 在vs中新建项目,根据以下图片步骤将plog头文件包含到项目中去 将include文件夹拷贝到项目路径 将头文件路径包含进来 右键项目 - 属性 - VC++目录

  • Vue全局监测错误并生成错误日志实现方法介绍

    目录 一.准备工作 (1)规定错误码 (2)设置错误处理函数 (3)保存错误日志 二.监听错误 (1)JS错误与静态资源加载错误 (2)Vue逻辑错误 (3)请求错误与Promise错误 三.效果演示 四.完整代码 一.准备工作 (1)规定错误码 像是请求码(404.500)一样,我觉得错误都应该规定好对应的错误码.个人喜好. // 错误代码 const errCode = new Map([ // 本地系统错误 ['E1001', '系统未知错误'], ['E1002', 'vue逻辑错误']

  • docker连接spring boot和mysql容器方法介绍

    在之前使用docker部署运行了Spring Boot的小例子,但是没有使用数据库.在这一篇中,介绍docker如何启动mysql容器,以及如何将Spring Boot容器与mysql容器连接起来运行. docker基本命令 首先熟悉一下在操作过程中常用的docker基本命令: docker images:列出所有docker镜像 docker ps:列出所有运行中的容器,-a参数可以列出所有容器,包括停止的 docker stop container_id:停止容器 docker start

  • Tomcat并发优化方法介绍

    Tomcat 常用运行模式有3种,分别为 bio,nio,apr.生产环境建议用apr,详细请看上一篇博文<Tomcat之--运行模式> 安装APR [root@liuyazhuang ~]# yum -y install apr apr-devel openssl-devel [root@liuyazhuang ~]# tar zxvf tomcat-native.tar.gz [root@liuyazhuang ~]# cd tomcat-native-1.1.24-src/jni/nat

  • JBoss5.x下配置Log4j方法介绍

    最近在学习JBoss下配置Log4j,JBoss的各个版本的目录.JBoss和Log4j集成的文件名每次都有变化,在JBoss5.x下配置了log4j.xml文件,但是配置没有生效.如果你在项目中没有指定使用的log4j的配置文件,最好使用JBoss自带的配置文件,文件名为jboss-log4j.xml.该文件在Jboss容器的目录为:${JBOSS_HOME}\server\default\conf下.下面就是基于log4j默认配置的一些基本修改和注释: <span style="fon

  • SQL Server 数据库清除日志的方法

    方法一: 1.打开查询分析器,输入命令 BACKUP LOG database_name WITH NO_LOG 2.再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了. 方法二: 设置检查点,自动截断日志 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大 1.设置数据库模式为简单模

  • DBCC SHRINKDATABASEMS SQL数据库日志压缩方法

    MS SQL数据库日志压缩方法 MS SQL性能是很不错的,但是数据库用了一段时间之后,数据库却变得很大,实际的数据量不大.一般都是数据库日志引起的!数据库日志的增长可以达到好几百M. 网上的MSSQL虚拟主机价格也贵,要想不让数据库超容,只好压缩下数据库日志,或者删除数据库日志. 下面我给大家介绍一个方法 1.打开企业管理器 2.打开要处理的数据库 3.点击菜单>工具>SQL查询分析器 4.在输入窗口里面输入: DUMP TRANSACTION [数据库名] WITH NO_LOG BACK

  • CodeIgniter记录错误日志的方法全面总结

    本文实例讲述了CodeIgniter记录错误日志的方法.分享给大家供大家参考,具体如下: CI工作流程: 所有的入口都从根目录下的index.php进入,确定应用所在目录后,加载 codeigniter/CodeIgniter.php 文件,该文件会顺序加载以下文件执行整个流程. index.php:检测文件路径,加载codeigniter.php文件 codeigniter.php: 加载 Common/constants....文件.获取文件模式.设置计时器.实例化类(错误类.扩展类.钩子类

  • 实现自动定期删除Nginx日志的方法

    系统日志是一个很重要的东西但同时如果我们不定时清除空间就会给日志占完了,下面我来介绍定期删除日志实现方法,各位同学可参考. Nginx的日志文件累积的太多,最后充满了整个磁盘空间,所以昨天做了一个可以定期自动删除的脚本. #!/bin/bash find /usr/local/nginx/logs/ -mtime +15 -type f -name *.log | xargs rm -f 上述脚本是将nginxlogs下面的15天之前的日志文件删除,可以参考上面的脚本删除其他程序(如PHP.To

  • SSM项目中配置LOG4J日志的方法

    本文介绍了SSM项目中配置LOG4J日志的方法,分享给大家,具体如下: 在pom文件中添加依赖 . <!--Log4j2配置--> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.8.1</version> </dependency> <

随机推荐