[置顶] windows和linux环境下使用google的glog日志库
2017-08-23 15:47
363 查看
一.概述
glog是google推出的一款轻量级c++开源日志框架,源码在github上,目前最新release版本是v0.3.5。githut地址:https://github.com/google/glog,避免新版本踏坑,习惯性选用低版本v0.3.3。
二.生成windows库
源码下载完成后,根目录下会有google-glog.sln工程文件呢,用visual studio打开会有四个项目,分别如下:1.libglog:生成动态库的源码
2.libglog_static:生成静态库的源码
3.libglog_unittest:测试动态库的源码工程
4.libglog_unittest_static:测试静态库的源码工程
windows下使用动态库演示,编译libglog工程,生成"libglog.dll"和"libglog.lib"库文件
三.windows下使用glog库
1.如你使用静态库,需要添加#define GOOGLE_GLOG_DLL_DECL,动态库不需要添加2.如你工程中添加了<windows.h>,直接编译会报如下错误:
"ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail."
解决办法:添加宏 "#define GLOG_NO_ABBREVIATED_SEVERITIES",并且代码中的要使用google::GLOG_ERROR代替google::ERROR,google::GLOG_INFO代替google::INFO,google::GLOG_WARNING代替google::WARNING,google::GLOG_FATAL代替google::FATAL
原因:windows.h中定义的宏ERROR与glog中定义的宏ERROR冲突。
测试代码如下:
#include "stdio.h" #include <Windows.h> #define GLOG_NO_ABBREVIATED_SEVERITIES #include <iostream> #include <string> #include "glog/logging.h" using namespace std; #pragma comment(lib, "lib/libglog.lib") void main() { //初始化参数 FLAGS_logtostderr = false; //TRUE:标准输出,FALSE:文件输出 FLAGS_max_log_size = 1; //日志文件大小 //FLAGS_minloglevel = google::GLOG_INFO //glog初始化 google::InitGoogleLogging("mqttserver"); google::SetLogDestination(google::GLOG_INFO,"F:\\test"); LOG(INFO)<<"this is info log"; LOG(WARNING)<<"this is warning log"; LOG(ERROR)<<"this is error log"; int i = 4; LOG_IF(INFO, i == 4)<<"if log"; google::ShutdownGoogleLogging(); return; }
运行输出结果如下:
四.生成linux库
Linux版本使用的centos7.3,编译生成库1. cd glog-0.3.3
2. ./configure
3. make
make完成后会在.lib下生成相应的库文件
五.Linux下使用glog库
Linux使用静态库来测试,copy静态库libglog.a和src/glog的头文件到自己的工程目录,创建main.cpp文件,添加如下代码:#include <stdio.h> #include "glog/logging.h" int main() { FLAGS_logtostderr = true; google::InitGoogleLogging("mqttserver"); google::SetLogDestination(google::GLOG_INFO,"./test"); LOG(INFO) << "this is log"; LOG(WARNING) << "this is warnning"; LOG(ERROR) << "this is error"; google::ShutdownGoogleLogging(); }
编译:g++ main.cpp -o main -L. -lglog -lpthread运行:./main 输出结果如下:
源码地址(windows): 点击下载源码地址(linux): 点击下载
欢迎加群交流:C/C++开发交流
扫[b]更多技术文章扫码关注微信公众号[/b]
相关文章推荐
- 使用 Linux 作为服务器,Windows 作为开发机环境配置
- 使用cygwin工具将linux环境中运行的hostapd移植到windows中
- 使用boch仿真器在x86 PC平台上搭建Linux0.11系统环境(windows下)
- 使用boch仿真器在x86 PC平台上搭建Linux0.11系统环境(windows下)
- 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境
- Linux使用Windows环境的Android SDK
- Windows下的Memcache安装与Java部署(测试用,一般情况下会在linux环境下使用memcahe)
- 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境
- 惊艳的cygwin——Windows下的Linux命令行环境的配置和使用
- 惊艳的cygwin——Windows下的Linux命令行环境的配置和使用
- Linux环境下使用MySql与在Windows下的一点区别
- 使用 Vmware Player在WIndows内构建Linux环境
- 使用Vagrant在Windows平台搭建嵌入式Linux开发环境(1)虚拟环境部署
- 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境
- 惊艳的cygwin——Windows下的Linux命令行环境的配置和使用
- 使用Vagrant在Windows平台搭建嵌入式Linux开发环境(2)Tftpd服务器搭建
- 如何在Linux环境下在CodeBlock中安装使用Google Protobuf
- 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境
- 在windows开发环境中,java代码中使用linux格式路径的方法需要注意的问题
- [软件测试]Linux环境中简单清爽的Google Test (GTest)测试环境搭建(初级使用)