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="."; ” 试试吧

Glog的更多相关文章

  1. window环境下glog的安装

    window环境下glog的安装 分类: c++2014-09-23 14:12 32人阅读 评论(0) 收藏 举报 下载后解压,利用Visual Studio打开google-glog.sln.生成 ...

  2. Google glog 使用

    Google glog 使用 1        简介 Googleglog 库实现了应用级的日志记录,提供了C++ 风格的流操作和各种助手宏. 代码示例: #include <glog/logg ...

  3. glog使用

    How To Use Google Logging Library Glog 的基本使用方法在google code上有介绍:How To Use Google Logging Library ;最好 ...

  4. glog摘记

    projcet url:https://code.google.com/p/google-glog/ usage: application-level logging setting flags GL ...

  5. 谷歌日志库GLog 使用说明

    1 引用头文件 加载库 #include <glog/include/logging.h> #pragma comment(lib,"libglog.lib") 2 初 ...

  6. glog另启动线程写文本日志

    glog本身是很高效的,google的大牛肯定知道大规模的写日志用glog的话肯定会影响业务线程的处理,带负荷的磁盘IO谁都桑不起.比方levelDB就是默认异步写,更不用说google的三驾马车都是 ...

  7. glog 使用

    glog 使用 来源:http://www.cnblogs.com/tianyajuanke/archive/2013/02/22/2921850.html 一.安装配置 1.简介 google 出的 ...

  8. Glog 和 Log4cxx 的对比

    转自:http://monkeycn.iteye.com/blog/1021703 #1 Log4cxx有比较完整的配置文档方式,xml和java配置档:GLog只能通过启动程序的时候的输入参数来配置 ...

  9. GLOG使用Demo

    GLOG使用Demo GLOG是Google开源的一个精简的日志系统,博主简单学习了一下并记录常见用法,以备日常查询 一.安装 照例是编译安装,不过没有使用cmake git clone https: ...

随机推荐

  1. MYSQL 错误日志

    背景知识 : 就算我们不配置mysql的错误文件,它也会有一个默认的,在data文件夹下保存(.err文件) 还好这个文件保存在哪我们还是可以配置的 配置方法: log-err=E:\DB\mysql ...

  2. oracle 查询表的大小,表空间的使用情况,默认表空间

    oracle 查询表的大小,表空间的使用情况,默认表空间 oracle 查询表的大小,表空间的使用情况,默认表空间 --查看某张表占用磁盘空间大小 ( 表名大写 ) Select Segment_Na ...

  3. Xamarin生成的APK大小分析

    原文:Xamarin生成的APK大小分析 刚接触Xamarin都会被Xamarin的售价吓一跳,另外就是它生成的APK大小,官方也有相关的说明,这里加上自己的理解同意讲解下: 以下是针对Android ...

  4. 字符串经典的hash算法

    1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1). 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无 ...

  5. rsyslog 定义模板

    rsyslog默认会将特殊字符(\t)转换成#009 由全局配置$EscapeControlCharactersOnReceive 决定,如果自己需要根据\t处理输出时,需将该选项改为 off. $E ...

  6. 看大数据时代下的IT架构(1)业界消息队列对比

    一.MQ(Message Queue) 即 消息队列,一般用于应用系统解耦.消息异步分发,能够提高系统吞吐量.MQ的产品有很多,有开源的,也有闭源,比如ZeroMQ.RabbitMQ. ActiveM ...

  7. CVTE 嵌入式软件工程师 二面

    昨天晚上收到了二面的通知,激动啊-第二天提前20分钟到达指定地点,然后一起做大巴去到CVTE总部,发现笔试刷掉的人好像并不是很多.我们一下车被带到了公司的电影院,听演唱会.呵呵,挺有意思的,有一个漂亮 ...

  8. ios webview 加载含有中文的URL网页显示白屏

    1. ios中的webview加载的URL不可以含有中文,解决办法说将中文字符转码, 如下: - (NSString *)URLEncodeString { NSCharacterSet *set = ...

  9. tomcat部署java项目

    tomcat部署java项目 1.启动tomcat 进入到tomcat安装目录下的bin #cd /opt/tomcat/bin #./startup.sh // 执行重启命令 2.重建一个新目录导入 ...

  10. SGU题目总结

    SGU还是个不错的题库...但是貌似水题也挺多的..有些题想出解法但是不想写代码, 就写在这里吧...不排除是我想简单想错了, 假如哪位神犇哪天发现请告诉我.. 101.Domino(2015.12. ...