glog是什么意思,glog 入門教程

 2023-12-25 阅读 39 评论 0

摘要:glog的簡單入門,glog雖然在配置參數方面比較麻煩,但是在小規模程序中,由于其簡單靈活,也許會有優勢。 glog?是google的開源日志系統,相比較log4系列的日志系統,它更加輕巧靈活,而且功能也比較完善。?結合之前看的一些資料&

glog的簡單入門,glog雖然在配置參數方面比較麻煩,但是在小規模程序中,由于其簡單靈活,也許會有優勢。

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目錄

??LOG(INFO) <<?"hello glog";?????//?打印log“hello glog.??類似于C++ stream。glog是什么意思。

}

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),每個級別的日志會輸出到不同的文件中。glog安裝,并且高級別日志文件會同樣輸入到低級別的日志文件中。?即:FATAL的信息會同時記錄在INFOWARNINGERRORFATAL日志文件中。默認情況下,glog還會將會將FATAL的日志發送到stderr中。

?

現在的問題是:log總不能都打印到/tmp/目錄下吧。godot教程?下面的小結來解決:

?

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?條件中止程序。golang入門教程。豐富的條件判定宏,可預設程序終止條件;

5?異常信號處理。程序異常情況,可自定義異常處理過程;

6?支持debug功能。可只用于debug模式;

7?自定義日志信息;

8?線程安全日志記錄方式;

9?系統級日志記錄;

10?google perror風格日志信息;

11?精簡日志字符串信息。

功能點12demo實例。?其他功能見在如下鏈接講的簡單明了,在此也不一一細說:

1)官方文檔(英文):?http://google-glog.googlecode.com/svn/trunk/doc/glog.html#verbose

2)有網友的中文翻譯:http://mengjh.blog.51cto.com/2860827/546766

?

5,??總結glog簡單易用,缺點感覺還是配置參數不如log4系列使用配置文件來的方便。在小規模程序(單元測試?功能點自測)中使用,應該是個不錯的選擇吧。



附:

1、簡介
???? glog 是google的開源日志系統,本質上是一個程序級記錄日志信息的c++庫,編程使用方式與c++的stream操作類似,例如:

  1. LOG(INFO)?<<?"Hello?Glog";?

2、安裝
??? 下載連接:http://code.google.com/p/google-glog/
??? 安裝:
./configure && make && make install
3、日志嚴重等級
????? glog可通過根據指定的嚴重性等級,來選擇性記錄日志。日志信息嚴重性等級按由低到高排列依次為:INFO, WARNING, ERROR, 和 FATAL四級。使用者可以在命令行中設置嚴重性等級門限值來控制日志的輸出。

4、編程試用
  1. #include<iostream>???
  2. #include<stdlib.h>???
  3. #include<stdio.h>???
  4. #include<string>???
  5. ???
  6. //glog???
  7. #include<glog/logging.h>???
  8. using?namespace?std;???
  9. ???
  10. int?main()???
  11. {???
  12. ????//?HOME_PATH???
  13. ????string?home?=?"./log/";??//要先創建此目錄,否則運行報錯.
  14. ????//glog?init???
  15. ????google::InitGoogleLogging(argv[0]);???
  16. ????string?info_log?=?home?+?"master_info_";???
  17. ????google::SetLogDestination(google::INFO,?info_log.c_str());???
  18. ????string?warning_log?=?home?+?"master_warning_";???
  19. ????google::SetLogDestination(google::WARNING,?warning_log.c_str());???
  20. ????string?error_log?=?home?+?"master_error_";???
  21. ????google::SetLogDestination(google::ERROR,?error_log.c_str());???
  22. ????string?fatal_log?=?home?+?"master_fatal_";???
  23. ????google::SetLogDestination(google::FATAL,?fatal_log.c_str());???
  24. ??????
  25. ????LOG(INFO)<<"Hello?Glog";??
  26. ????return?0;???
  27. }???

5、編譯:假設源文件命名為a.cpp
??????? g++ a.cpp -o a -lglog -lpthread



版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/196791.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息