GLOG使用Demo
阿新 • • 發佈:2018-11-10
GLOG使用Demo
GLOG是Google開源的一個精簡的日誌系統,博主簡單學習了一下並記錄常見用法,以備日常查詢
一、安裝
照例是編譯安裝,不過沒有使用cmake
git clone https://github.com/google/glog.git
cd glog
./autogen.sh
./configure
make
sudo make install
二、Demo
# CMakeLists.txt cmake_minimum_required (VERSION 2.8.11) project (proj) find_package (glog) add_executable (demo01 1.cc) target_link_libraries (demo01 glog)
// 1.cpp #include <glog/logging.h> int main(int argc, char *argv[]) { google::InitGoogleLogging(argv[0]); google::SetLogDestination(google::INFO, "log/"); // 把日誌同時記錄檔案,最低級別為INFO // 通過GFLAGS來設定引數,更多選項可以在logging.cc裡面查詢 // 日誌等級分為INFO, WARNING, ERROR, FATAL,如果是FATAL級別這直接執行報錯 FLAGS_stderrthreshold = google::WARNING; FLAGS_colorlogtostderr = true; LOG(WARNING) << "Hello GLOG"; // 條件輸出 LOG_IF(INFO, 20 > 10) << "20 > 10"; // 頻率輸出,本質上是通過google::COUNTER這個計數機實現的 for (int i = 0; i < 10; i++) { LOG_EVERY_N(ERROR, 3) << "每隔3次輸出一次 " << i; LOG_FIRST_N(ERROR, 2) << "前兩次輸出 " << i; LOG_IF_EVERY_N(WARNING, 1 < 2, 2) << "條件輸出+頻率" << google::COUNTER; } google::ShutdownGoogleLogging(); }
三、編譯執行
mkdir build
cd build
mkdir log # 存放日誌的目錄
cmake ..
make
./demo01
四、執行結果
命令列結果(事實上不同等級的日誌會有不同的顏色)
W1110 12:00:49.353030 3474011072 1.cc:13] Hello GLOG E1110 12:00:49.355512 3474011072 1.cc:19] 每隔3次輸出一次 0 E1110 12:00:49.355850 3474011072 1.cc:20] 前兩次輸出 0 W1110 12:00:49.355880 3474011072 1.cc:21] 條件輸出+頻率1 E1110 12:00:49.355916 3474011072 1.cc:20] 前兩次輸出 1 W1110 12:00:49.355944 3474011072 1.cc:21] 條件輸出+頻率3 E1110 12:00:49.355969 3474011072 1.cc:19] 每隔3次輸出一次 3 W1110 12:00:49.356000 3474011072 1.cc:21] 條件輸出+頻率5 E1110 12:00:49.356024 3474011072 1.cc:19] 每隔3次輸出一次 6 W1110 12:00:49.356053 3474011072 1.cc:21] 條件輸出+頻率7 W1110 12:00:49.356077 3474011072 1.cc:21] 條件輸出+頻率9 E1110 12:00:49.356101 3474011072 1.cc:19] 每隔3次輸出一次 9
同時在log目錄下會有日誌檔案
➜ build tree log/
log/
├── 20181110-115213.48624
├── 20181110-115249.48650
├── 20181110-120049.48867
└── demo01.INFO -> 20181110-120049.48867 # demo01.INFO會軟鏈到最新的日誌
五、小結
現在日益感覺到日誌的重要性,感覺GLOG設計的非常精妙,程式碼也比較明瞭,但官網的文件比較簡單,更多功能可以直接讀原始碼