glog安裝(轉載)

glog 入門簡介

Glog的簡單入門,glog雖然在配置參數方面比較麻煩,可是在小規模程序中,因爲其簡單靈活,也許會有優點。html

 

0,  glog 是google的開源日誌系統,相比較log4系列的日誌系統,它更加輕巧靈活,並且功能也比較完善。 結合以前看的一些資料, 這裏簡單對其作個簡介。ios

 

1, 安裝:安全

最新版本:0.3.1  http://code.google.com/p/google-glog/多線程

安裝只需:./configure; make; make installapp

 

2, 簡單示例svn

main.cpp:post

#include <iostream>單元測試

#include "glog/logging.h"   // glog 頭文件測試

using namespace std;google

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系列使用配置文件來的方便。在小規模程序(單元測試?功能點自測)中使用,應該是個不錯的選擇吧。

相關文章
相關標籤/搜索