一.概述

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冲突。

测试代码如下:

/********************************************************
Copyright (C), 2016-2018,
FileName: main
Author: woniu201
Email: wangpengfei.201@163.com
Created: 2017/08/23
Description: Glog使用Demo
********************************************************/
#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_alsologtostderr = TRUE; //除了日志文件之外是否需要标准输出
FLAGS_colorlogtostderr = FALSE; //标准输出带颜色
FLAGS_logbufsecs = 0; //设置可以缓冲日志的最大秒数,0指实时输出
FLAGS_max_log_size = 10; //日志文件大小(单位:MB)
FLAGS_stop_logging_if_full_disk = true; //磁盘满时是否记录到磁盘 //FLAGS_minloglevel = google::GLOG_INFO //glog初始化
google::InitGoogleLogging("mqttserver");
google::SetLogDestination(google::GLOG_INFO,"D:\\project\\vm\\test"); while (1)
{
LOG(INFO)<<"this is info log" ;
LOG(WARNING)<<"this is warning log";
LOG(ERROR)<<"this is error log";
//LOG(FATAL) << "this is fatal log";
Sleep(1000);
} //条件日志输出
int i = 4;
LOG_IF(INFO, i == 4)<<"if log"; google::ShutdownGoogleLogging();
getchar();
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文件,添加如下代码:

/********************************************************
Copyright (C), 2016-2018,
FileName: main
Author: woniu201
Email: wangpengfei.201@163.com
Created: 2017/08/23
Description: Glog使用Demo
********************************************************/
#include <stdio.h>
#include "glog/logging.h" int main()
{
//初始化参数
FLAGS_logtostderr = FALSE; //TRUE:标准输出,FALSE:文件输出
FLAGS_alsologtostderr = TRUE; //除了日志文件之外是否需要标准输出
FLAGS_colorlogtostderr = FALSE; //标准输出带颜色
FLAGS_logbufsecs = 0; //设置可以缓冲日志的最大秒数,0指实时输出
FLAGS_max_log_size = 10; //日志文件大小(单位:MB)
FLAGS_stop_logging_if_full_disk = 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): 点击下载

没有下载积分的,可以关注下面公众号,回复"102"获取源码

源码地址(linux): 点击下载

没有下载积分的,可以关注下面公众号,回复"103"获取源码

欢迎加群交流:C/C++开发交流

windows和linux环境下使用google的glog日志库的更多相关文章

  1. windows及linux环境下永久修改pip镜像源的方法

    一.在windows环境下修改pip镜像源的方法(以python3.5为例) (1):在windows文件管理器中,输入 %APPDATA% (2):会定位到一个新的目录下,在该目录下新建pip文件夹 ...

  2. windows及linux环境下修改pip的默认镜像源的方法

    1. 在windows环境下 临时修改 使用清华大学的源安装numpy包. pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple ...

  3. windows和linux环境下java调用C++代码-JNI技术

    最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...

  4. windows和linux环境下制作U盘启动盘

    新笔记本上,要装xp的系统,100%会破坏原有的Linux系统,因为安装xp的时候会自动覆盖硬盘的主引导扇区,这个扇区一旦被重写,那么原有的linux根本就启动不了. 要想玩linux和xp双系统,一 ...

  5. jenkins在windows及linux环境下安装

    下载 下载地址: https://jenkins.io/download/ 下载windows和linux通用的war包 jenkins在windows下安装 前提:已经安装jdk.tomcat 将w ...

  6. windows和linux环境下keras的模型框架可视化

    1.简介 keras提供了模型可视化模块,下面讲解下安装教程和简易教程. 2.安装教程 2.1windows环境下的安装 2.1.1安装指定模块 pip install pydot-ng pip in ...

  7. Windows及Linux环境下Tomcat的JVM参数调优

    Windows环境: catalina.bat文件修改 set JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=512m -XX:MaxPermS ...

  8. [Python学习] Linux环境下的Python配置,必备库的安装配置

    1.默认Python安装情况 一般情况,Linux会预装Python的,版本较低,比如Ubuntu15的系统一般预装的是Python2.7.10. 使用命令:which python可以查看当前的py ...

  9. Windows和Linux环境下Memcached安装与配置(转)

    一.memcached安装配置 windows平台安装 1.memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/ ...

随机推荐

  1. 树莓派4硬件---GPIO篇

    树莓派拿到手已经两个多月了,其实从最开始的期待安装好ROS,到前几天完成了ROS的源码编译安装,对linux的调教也时花了些时间的.现在终于想起来,树莓派上还有GPIO,还没有用过了.说干就干,开始. ...

  2. Java生成不重复的随机数组的方法

    一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个01之间的double类型小数,将其乘以一个数,比如25,就能得到一个025范围内的随机数,这个在j2m ...

  3. StrictMode 详解

    StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题.比如,如果你在UI线程中进行了网络或者磁盘操作,StrictMode就会 ...

  4. git补充(命令)转自https://github.com/Wasdns/github-example-repo

    在使用命令行进行提交时,通常使用git commit -m '注释信息'来填写commit注释信息,但是-m参数适合单行注释,对于多行的commit注释来说是不合适的.这里推荐使用git commit ...

  5. Linux后台运行任务

    [Linux]ssh命令行下多任务前后台切换 原文:https://my.oschina.net/huxuanhui/blog/13844 我们都知道,在 Windows 上面,我们要么让一个程序作为 ...

  6. DELPHI解析JSON格式化的日期

    DELPHI解析JSON格式化的日期 json返回的日期是 /Date(1560355200000)/ 这样的格式. 这个1560355200000,是指1970年以后的秒数. DELPHI如何解析这 ...

  7. VMware Workstation虚拟机打开系统时,提示“无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件。是否在安装 VMware Workstation 后重新引导?”

    VMware Workstation虚拟机打开系统时,提示“无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件.是否在安装 VMware Workstation 后重新引导? ...

  8. PHP网络服务

    [Socket] socket_create 用于创建一个Socket socket_bind 用于将IP地址和端口绑定到socket_create 函数所创建的句柄中. socket_listen ...

  9. Ionic4.x 中的 UI 组件(UI Components) 侧边栏ion-menu组件以及底部tabs结合 侧边栏 ion-menu

    1.侧边栏 ion-menu 组件的基本使用 1.创建项目 ionic start myApp sidemenu 2.配置项目 属性 作用 可选值 side 配置侧边栏的位置 start end me ...

  10. 解压命令unzip常用方法汇总

    解压命令unzip常用方法汇总: 1.把文件解压到当前目录下 1 unzip pythontab.com.zip 2.如果要把文件解压到指定的目录下,需要用到-d参数. 1 unzip -d ./tm ...