1. 程式人生 > >GLOG使用Demo

GLOG使用Demo

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設計的非常精妙,程式碼也比較明瞭,但官網的文件比較簡單,更多功能可以直接讀原始碼