提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
Google 日志记录 (glog)是一个实现应用程序级日志记录的 C++ 库14。该库提供基于 C++ 样式流和各种帮助程序宏的日志记录 API。是一款超级好用且方便的日志记录的第三方库。
一、第三方库源文件地址
链接: glog第三方库
二、下载源代码并编译
1.克隆对应的文件到本地
git clone https://github.com/google/glog.git
cd glog
2.运行CMake以配置构建树。
代码如下(示例):
cmake -S . -B build -G "Unix Makefiles"
3.运行CMake以配置构建树。
注意:在编译下行代码时,需要有build这个文件夹在当前目录
cmake --build build
4.安装对应的动态库到本地资源中
注意:如果权限不够,请在最前面加上sudo
cmake --build build --target install
完成以上操作即可开始代码编写。
三、在vscode中代入代码并编写
1.vscode的目录结构
.vscode:是vscode的默认文件夹
build:是用于cmake的文件夹,可能生成很多中间键,所以放在一个文件夹中便于管理
CMakeLists.txt:用于cmake
main.cpp:源文件
2.主函数main.cpp中写出测试案例
#include <glog/logging.h>
#include <iostream>
using namespace std;
int main() {
FLAGS_log_dir = "./log/";
FLAGS_alsologtostderr = true;
FLAGS_colorlogtostderr = true;
FLAGS_stderrthreshold = google::GLOG_INFO; //设置对应级别及以上级别标准输出
FLAGS_max_log_size = 10; // 200MB
google::InitGoogleLogging("myapp");
google::SetLogDestination(google::GLOG_INFO,
std::string(FLAGS_log_dir + "info_").c_str());
google::SetLogDestination(google::GLOG_WARNING,
std::string(FLAGS_log_dir + "warning_").c_str());
google::SetLogDestination(google::GLOG_ERROR,
std::string(FLAGS_log_dir + "error_").c_str());
google::SetLogDestination(google::GLOG_FATAL,
std::string(FLAGS_log_dir + "fatal_").c_str());
google::SetLogFilenameExtension(".log");
LOG(ERROR) << "yes";
cout << "yes" << endl;
return 0;
}
注意:在你直接拷贝上面代码到main.cpp中,会出现如下情况
这是因为vs没有识别到你是否使用了动态库的原因,所以需要在main.cpp的首行加上
#define GLOG_USE_GLOG_EXPORT
这样子,vscode就知道使用了动态库,就不会出现红色下划线了。
如果有必要,可能还需要再加上一行#pragma warning(disable : 4996)
用于忽略一些无效报错。
3.编写cmake文件CMakeLists.txt
cmake_minimum_required (VERSION 3.16)
project (myproj VERSION 1.0)
find_package (glog 0.8.0 REQUIRED)
add_executable (myapp main.cpp)
target_link_libraries (myapp glog::glog)
正常的Cmake,只需要将终端cd到build文件夹,并执行如下指令,就可以生成myapp可执行文件了
cmake ..
make
4.vscode自动化编译
如果需要vscode能够自动化读取CMakeLists.txt,执行对应的cmake和make命令,则需要对vscode中的配置文件进行编译,主要需要修改配置文件为launch.json和tasks.json。
launch.json修改如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "g++ - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
//可执行文件的绝对路径
"program": "${workspaceFolder}/build/myapp",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Build",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
tasks.json修改如下:
{
"version": "2.0.0",
"options": {
//对应build文件夹的绝对路径
"cwd": "${workspaceFolder}/build"
},
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"args": []
},
{
"label": "Build",
"dependsOrder": "sequence", //按列出的顺序执行任务依赖项
"dependsOn": [
"cmake",
"make"
]
}
]
}
当修改玩上述两个文件后,即可在vscode的调试中一键运行遍历当前项目文件。
四、glog的拓展使用
1.在window环境下通过vcpkg下载glog
小编之前做项目的时候,发现有限第三方库很难在window环境下进行搭建,导致每次新写一个算法,需要进行很长时间的环境搭配,但是vcpkg它类似于java中的maven,很好的解决了这些困扰,只需要输入几行命令,即可将第三方库软件下载到你当前的电脑上,然后直接使用。以glog为例,在安装好vcpkg后,执行以下命令:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install glog
这样,即可在你的vcpkg下载文件夹中找到所对应的include和lib文件,在编译你的文件时,直接将对应文件include和lib文件加入到你的项目中即可。推荐使用。
2.在linux环境下通过vcpkg下载glog
这个小编暂时没有试过,一般是直接clone了github,暂时没有碰到过特别难搭建的开源库,所以暂无经验,后续如有相关使用,第一时间更新。
总结
glog是一款特别好用的,项目级别的日志记录第三方库,它可以多样化输出的格式,并且有效的保存每次的记录结果,因为有专业的工程师编写,所以bug较少,非常推荐在一些自己的项目中去使用。本篇博客主要是记录自己刚使用glog的过程,便于后面可以回顾。