1.glog
glog是google出的一个轻量级的c++日志库
2.下载及编译
下载或克隆库,我选择的是V0.6.0版本:
github.com/goolge/glog/releases/tag/v0.6.0
我用cmake编译(参考:github.com/google/glog#cmake)
按照说明步骤进行编译即可
问题一
在执行 cmake --build build命令后,出现如下错误:
undefined reference to `typeinfo for testing::Test
解决方法: 打开CmakeLists.txt, 把ON修改为OFF即可
option (WITH_GTEST "Use Google Test" OFF)
参考:
从glog-0.6.0 undefined reference to `typeinfo for testing::Test‘-CSDN博客
继续上面的步骤又出现如下错误
问题二:
fatal error: glog/platform.h: 没有那个文件或目录
我发现我生成的build路径下的glog文件夹下只有5个头文件,缺少log_severity.h和platform.h两个头文件
解决方法: 在src下的glog下把那两个头文件拷贝到你的工程目录下,即可。
参考:
问题三:
fatal error: glog/logging.h : 没有那个文件或目录
解决方法:
sudo apt-get install libgflags-dev
参考:fatal error: gflags/gflags.h: No such file or directory-CSDN博客
3.测试demo
参考:glog 测试与使用-CSDN博客
CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(test_glogs)
SET(CMAKE_BUILD_TYPE Debug)
#glog
include_directories(./thirdparty)
link_directories(./thirdparty/glog/lib)
add_executable(main demo_glog/main.cpp)
target_link_libraries(main glog)
set_property(TARGET main PROPERTY CXX_STANDARD 11)
main.cpp
#include <iostream>
#include <glog/logging.h>
int main(int argc, char** argv)
{
// FLAGS_logtostderr = 1; // 将使日志信息记录到stderr而不保存到本地日志文件中,即使你设置了FLAGS_log_dir;
FLAGS_alsologtostderr = true; //除了日志文件之外是否需要标准输出
google::SetLogDestination(google::GLOG_WARNING, "./log/log_warning_"); //设置 google::WARNING 级别的日志存储路径和文件名前缀
google::SetLogDestination(google::GLOG_INFO, "./log/log_info_"); //设置 google::INFO 级别的日志存储路径和文件名前缀
google::InitGoogleLogging("test_2022");//初始化
// google::SetLogDestination(google::GLOG_INFO,"./log/aTestInfo");//设置日志文件路径,默认+时间作为生成的日志文件名
LOG(INFO) << "info test"; //输出一个Info日志
//有条件地中止程序
// int a1 = 5;
// CHECK(a1 == 4) << "a1 != 4,fail!"; //a1 != 4的时候输出后面的打印,然后中止程序退出
int a2 = 3;
int a3 = 3;
CHECK_EQ(a2,a3)<<"---==";//a2==a3的时候才继续运行 当a2!=a3的时候输出后面的打印退出中止运行
LOG(WARNING) << "warning test"; //输出一个Warning日志
LOG(ERROR) << "error test"; //输出一个Error日志
// LOG(FATAL) << "fatal test"; //输出一个Fatal日志,这是最严重的日志并且输出之后会中止程序
std::cout<<"-------end-----"<<std::endl;
return 0;
}
工程目录结构:
build下创建log目录
mkdir build
cd build
cmake ..
make
./main