標籤:
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 [email protected] $^ -L$(LIB) -lglog –lpthread #-lpthread 因為glog在多線程中需要一些鎖機制。
main.o: main.cpp
g++ -c -o [email protected] $^ -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系列使用設定檔來的方便。在小規模程式(單元測試?功能點自測)中使用,應該是個不錯的選擇吧。
glog安裝(轉載)