vs平台glog使用

经常使用Ceres里面包含glog日志库,需要进行输出日志,索性使用glog。

1编译与注意事项

1、开源项目首页已经从https://code.google.com/p/google-glog/迁移到https://github.com/google/glog。当前主版本是0.3.4。

2、下载代码后,双击根目录下的google-glog.sln,Visual Studio 2015提示先进行迁移,成功后就可以编译了。

3、在解决方案下有四个工程:libglog(是动态链接库工程,生成libglog.dll和libglog.lib),libglog_static(是静态库工程,生成libglog_static.lib,运行时不需要libglog.dll),logging_unittest和logging_unittest_static是相应的测试工程。
4、修改配置平台:默认平台是debug win32,在配置管理器中,修改想要的配置,例如修改为release x64

5、修改属性表:Glog不支持Unicode宽字符集,工程属性字符集保持多字节字符集。“C/C++”-“代码生成”中的“运行库”,libglog动态库工程必须选择“多线程DLL”或“多线程调试DLL”,libglog_static静态库工程必须选择“多线程”或“多线程调试”。

6、修改属性表:使用静态库必须在预处理器添加:GOOGLE_GLOG_DLL_DECL=。动态库不必添加。因windows.h中定义的宏ERROR,与glog中定义的宏ERROR冲突,预处理器添加GLOG_NO_ABBREVIATED_SEVERITIES
7、按需要编译库。例如生成静态库,点击解决方案中的libglog_static,右键生成即可,在输出中,可以看到在glog\x64\Release\生成库文件

8、snprintf重复定义问题:在 #ifndef HAVE_SNPRINTF前添加#define HAVE_SNPRINTF。1
9、glog使用:添加库文件:在包含目录添加头文件路径,附加库目录输入lib文件路径,附加依赖项添加lib文件名称。在使用的地方#include<glog/logging.h>。

2多个文件使用glog

新建class,SimpleClass

#pragma once
#include<glog/logging.h>
class SimpleClass
{
public:
	SimpleClass()
	{
		LOG(INFO) << "this is a simpleClass construct function";
	}
	~SimpleClass() = default;
};

在main函数中调用class,并统一生成日志

//

//https://www.cnblogs.com/hiloves/p/6009707.html
//https://www.jb51.net/article/238648.htm
//https://blog.csdn.net/dabenxiong666/article/details/71190102
//https://blog.csdn.net/longfeihufengyun/article/details/50319073
//https://zhuanlan.zhihu.com/p/99552958


#include <iostream>
#include<glog\logging.h>
#include"SimpleClass.h"
int main()
{
    //设置文件输出路径
    FLAGS_log_dir = "./";
    //是否将全部日志仅输出到控制台,否则默认输出error以上日志到控制台
    //FLAGS_logtostderr = true;
    //是否同时输出到控制台和文件
    FLAGS_alsologtostderr = true;
 
    //控制台日志是否支持颜色
    FLAGS_colorlogtostderr = true;
    
    // 如果不设置FLAGS_logtostderr ,FLAGS_alsologtostderr,FLAGS_colorlogtostderr,仅设置输出路径,则默认仅输出文件


    //全局初始化log日志,参数为工程名称
    google::InitGoogleLogging("glog_test");

    //四种日志级别
    //末尾不需加endl,glog会自动换行。
    LOG(INFO) << "info test";  //输出一个Info日志
    LOG(WARNING) << "warning test";  //输出一个Warning日志
    LOG(ERROR) << "error test";  //输出一个Error日志
   // LOG(FATAL) << "fatal test";  //输出一个Fatal日志,这是最严重的日志并且输出之后会中止程序
   
    //debug模式下才输出
    DLOG(INFO) << "debug log";

    //应用到同一工程下的其他cpp文件
    SimpleClass sc;
    google::ShutdownGoogleLogging();

    std::cout << "Hello World!\n";

}

结果:
控制台日志:
在这里插入图片描述
文件日志:用记事本打开即可。第二个info文件包含了info、warning、error、fatal所有级别日志。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值