博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
glog 入门简介 - foreveryl - 博客园
阅读量:6371 次
发布时间:2019-06-23

本文共 2257 字,大约阅读时间需要 7 分钟。

    foreveryl
    glog 入门简介
    Glog的简单入门,glog虽然在配置参数方面比较麻烦,但是在小规模程序中,由于其简单灵活,也许会有优势。
    
    0,  glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活,而且功能也比较完善。 结合之前看的一些资料, 这里简单对其做个简介。
    
    1, 安装:
    最新版本:0.3.1  http://code.google.com/p/google-glog/
    安装只需:./configure; make; make install
    
    2, 简单示例
    main.cpp:
    #include <iostream>
    #include "glog/logging.h"   // glog 头文件
    using namespace std;
    int main(int argc, char** argv) {
      google::InitGoogleLogging(argv[0]);    // 初始化
      // FLAGS_log_dir=".";  
      LOG(INFO) << "hello glog";     // 打印log:“hello glog.  类似于C++ stream。
    }
    Makefile:
    LIB=$(HOME)/install/glog/lib    #glog 安装路径
    INCLUDE=$(HOME)/install/glog/include
    test_glog : main.o
            g++ -o $@ $^ -L$(LIB) -lglog –lpthread   #-lpthread 因为glog在多线程中需要一些锁机制。
    main.o: main.cpp
            g++ -c -o $@ $^ -I$(INCLUDE)
    说明:
    glog 默认对log分为4级: INFO,  WARNING,  ERROR,  FATAL.  打印log语句类似于C++中的stream,实际上LOG(INFO) 宏返回的是一个继承自std::ostrstream类的对象。
               编译运行上述demo, glog默认会在/tmp/目录下生成log日志文件:test_glog.search-x2.username.log.INFO.20111003-161341.2083
    文件名各字段对应含义为:
    <program name>.<hostname>.<user name>.log.<severity level>.<date>.<time>.<pid>
    其中:
    1),<program name> 其实对应google::InitGoogleLogging(argv[0]);中的argv[0],即通过改变google::InitGoogleLogging的参数可以修改日志文件的名称。
    2),每个级别的日志会输出到不同的文件中。并且高级别日志文件会同样输入到低级别的日志文件中。 即:FATAL的信息会同时记录在INFO,WARNING,ERROR,FATAL日志文件中。默认情况下,glog还会将会将FATAL的日志发送到stderr中。
    
    现在的问题是:log总不能都打印到/tmp/目录下吧。下面的小结来解决:
    
    3, 参数设置:
    不同于log4系列的日志系统通过配置文件的方式, glog采用命令的方式来来配置参数。在glog的官方文档里,提到如下两种方式来配置参数(以修改日志目录为例:)
    1),gflags:
    ./your_application --log_dir=.
    (gflags 我还没有使用过)
    2),export 修改环境变量,如下所示:修改GLOG_log_dir为上层目录
    
    3)以上两种方法都需要使用命令行,除此之外,还可以直接在程序中指定(官方文档中没有提到, glog源代码中也不鼓励这么用,但确实是可行的):
    在glog/logging.h 头文件287---350行,有诸如“GLOG_log_dir”等变量的宏定义, 则其GLOG_log_dir实际为FLAGS_log_dir,  因此只需要在程序中设置FLAGS_log_dir的值即可。其他变量类似。取消main.cpp中的注释行“// FLAGS_log_dir="."; ” 试试吧
    
    4,  glog 支持功能列表如下:
    1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;
    2, 严重性分级,根据日志严重性分级记录日志;
    3, 可有条件地记录日志信息;
    4, 条件中止程序。丰富的条件判定宏,可预设程序终止条件;
    5, 异常信号处理。程序异常情况,可自定义异常处理过程;
    6, 支持debug功能。可只用于debug模式;
    7, 自定义日志信息;
    8, 线程安全日志记录方式;
    9, 系统级日志记录;
    10, google perror风格日志信息;
    11, 精简日志字符串信息。
    功能点1,2见demo实例。 其他功能见在如下链接讲的简单明了,在此也不一一细说:
    1)官方文档(英文): http://google-glog.googlecode.com/svn/trunk/doc/glog.html#verbose
    2)有网友的中文翻译:http://mengjh.blog.51cto.com/2860827/546766
    
    5,  总结:glog简单易用,缺点感觉还是配置参数不如log4系列使用配置文件来的方便。在小规模程序(单元测试?功能点自测)中使用,应该是个不错的选择吧。

转载地址:http://kbuqa.baihongyu.com/

你可能感兴趣的文章
腾讯、百度、阿里面试经验—(1) 腾讯面经
查看>>
Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心
查看>>
HTML DOM 教程Part1
查看>>
GBDT的基本原理
查看>>
MySQL修改root密码的多种方法(转)
查看>>
MongoDB 基础命令——数据库表的增删改查——遍历操作表中的记录
查看>>
.NET Core 跨平台发布(dotnet publish)
查看>>
Activity入门(一)
查看>>
CentOS下如何从vi编辑器插入模式退出到命令模式
查看>>
Mysql索引的类型
查看>>
Eclipse debug模式 总是进入processWorkerExit
查看>>
Nginx的https配置记录以及http强制跳转到https的方法梳理
查看>>
springcloud(十三):Eureka 2.X 停止开发,但注册中心还有更多选择:Consul 使用详解...
查看>>
关于Boolean类型做为同步锁异常问题
查看>>
TestLink运行环境:Redhat5+Apache2.2.17+php-5.3.5+MySQL5.5.9-1
查看>>
Get File Name from File Path in Python | Code Comments
查看>>
显示本月每一天日期
查看>>
[转]java 自动装箱与拆箱
查看>>
NET的堆和栈04,对托管和非托管资源的垃圾回收以及内存分配
查看>>
think in coding
查看>>