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