关于windows下glog日志库使用-创新互联-成都快上网建站

关于windows下glog日志库使用-创新互联

glog日志库,是谷歌开源的日志库。

目前创新互联建站已为千余家的企业提供了网站建设、域名、虚拟主机网站托管、企业网站设计、祥云网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

由于前两天发生了一次生产事故,一个C++程序的日志里面记录了很多乱码以及其他模块中的数据,初步怀疑是内存管理异常造成的,大的疑虑在于日志记录模块的多线程支持,原先的模块在单线程下没有任何问题,但是多线程下并没有经过稳定的压力测试,为了一了百了地解决,还是选用技术实例强劲的开源库吧,原先的库就留着开发测试小功能里面用用。

glog库,可以从github上下载。 https://github.com/google/glog

我的开发环境是windows10+vs2017,所以下载完成之后,解压缩,然后使用cmake-gui进行转换为vs2017的sln工程文件:

  1. 选择源代码为glog的目录,目标位置为glog目录下新建一个build-cmake,
  2. 在configure按钮点击,弹出窗口选择vs2017(这个都是默认会检测到电脑上的vs版本,如果要转换为64位的,则选择带有win64的,默认是32位,默认生成静态库)
  3. 点击generate,然后到build-cmake目录下就会生成vs2017的工程文件glog.sln,双击打开工程,分别在debug和release下编译,生成glogd.lib和glog.lib,这里我使用静态库。

现在glog的库文件已经有了,我同时编译了32位和64位两个版本。以及debug版本和release版本。

然后新建一个测试工程,我选用的是64位的工程,

  1. 添加glogd.lib和glog.lib以及build-cmake/glog下面的头文件到工程中去,添加glogd.lib和glog.lib,添加src/glog/log_severity.h。所有的添加操作都是拷贝。
  2. 在工程属性中,文件引入目录包含以上添加的文件目录,库引用目录也是如此。同时注意工程属性中C/C++->代码生成->运行库的参数,我选择的都是 “/MTd”,编译glog库工程和测试工程的这个选择要一致。
  3. 创建测试代码,需要在开头加上 GLOG_NO_ABBREVIATED_SEVERITIES和GOOGLE_GLOG_DLL_DECL,不然会报错。
  4. 然后就可以使用啦,可以参考如下我的测试代码,使用了两个线程同时写入,方便测试是否线程安全。可以参考我的github,
    #pragma once
    #define GLOG_NO_ABBREVIATED_SEVERITIES
    #define GOOGLE_GLOG_DLL_DECL
    #include "logging.h"
    using namespace google;
    #ifdef _DEBUG
    #pragma comment(lib, "glogd.lib")
    #else
    #pragma comment(lib, "glog.lib")
    #endif // DEBUG
    void testGlog2()
    {
    char str[20] = "hello log!";
    int i = 100000;
    while (i > 0) {
        //  LOG(INFO) << str;
        LOG(INFO) << "2info 2test" << "2hello 2log!";  //输出一个Info日志
        //  LOG(WARNING) << "warning test";  //输出一个Warning日志
      //    LOG(ERROR) << "error test";  //输出一个Error日志
        i--;
    }
    }
    void testGlog()
    {
    // Start google log system:
    FLAGS_log_dir = "E:\\logs";
    google::InitGoogleLogging("loglog");
    google::SetLogDestination(google::GLOG_INFO, "E:\\logs\\INFO_");
    google::SetStderrLogging(google::GLOG_FATAL);
    google::SetLogFilenameExtension("log_");
    FLAGS_colorlogtostderr = true;  // Set log color
    FLAGS_logbufsecs = 0;  // Set log output speed(s)
    FLAGS_max_log_size = 1024;  // Set max log file size
    FLAGS_stop_logging_if_full_disk = true;  // If disk is full
    thread *t = new thread(testGlog2);
    char str[20] = "hello log!";
    int i = 100000;
    while (i > 0) {
    //  LOG(INFO) << str;
        LOG(INFO) << "info test" << "hello log!";  //输出一个Info日志
    //  LOG(WARNING) << "warning test";  //输出一个Warning日志
    //  LOG(ERROR) << "error test";  //输出一个Error日志
        i--;
    }
    t->join();
    google::ShutdownGoogleLogging();
    }

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:关于windows下glog日志库使用-创新互联
当前链接:http://kswjz.com/article/dddoig.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流