網(wǎng)頁(yè)與網(wǎng)站設(shè)計(jì)什么是整體造型如何檢測(cè)網(wǎng)站是否安全
😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
這篇文章主要介紹glog日志庫(kù)配置使用。
無(wú)專精則不能成,無(wú)涉獵則不能通?!?jiǎn)⒊?/font>
歡迎來(lái)到我的博客,一起學(xué)習(xí),共同進(jìn)步。
喜歡的朋友可以關(guān)注一下,下次更新不迷路🥞
文章目錄
- :smirk:1. 項(xiàng)目介紹
- :blush:2. 環(huán)境配置
- :satisfied:3. 使用說(shuō)明
😏1. 項(xiàng)目介紹
項(xiàng)目Github地址:https://github.com/google/glog
glog(Google Logging Library)是由 Google 開發(fā)的 C++ 日志庫(kù)。它提供了一個(gè)簡(jiǎn)單易用的接口,用于在應(yīng)用程序中記錄日志消息。glog 被設(shè)計(jì)為高效、可靠和線程安全的,可以廣泛應(yīng)用于各種 C++ 項(xiàng)目中。
下面是 glog 的一些主要特點(diǎn)和優(yōu)勢(shì):
1.簡(jiǎn)單易用的接口:glog 提供了簡(jiǎn)潔明了的 API,使得開發(fā)人員可以輕松地在應(yīng)用程序中記錄日志消息。通過(guò)使用 LOG(INFO)、LOG(ERROR) 等宏,可以方便地輸出不同級(jí)別的日志信息。
2.多級(jí)別日志:glog 支持不同級(jí)別的日志記錄,包括 INFO、WARNING、ERROR、FATAL 等。通過(guò)配置日志級(jí)別,可以控制記錄哪些級(jí)別及以上的日志消息。
3.日志格式化:glog 允許開發(fā)人員自定義日志消息的格式。它支持類似于 printf 的格式化字符串,可以添加變量、時(shí)間戳等信息到日志消息中。
4.完整的調(diào)用棧:glog 可以記錄完整的調(diào)用棧信息,包括文件名、行號(hào)和函數(shù)名。這對(duì)于定位和調(diào)試問題非常有幫助。
5.后臺(tái)線程寫入:glog 使用后臺(tái)線程異步寫入日志文件,避免了頻繁的磁盤 I/O 操作對(duì)應(yīng)用程序性能的影響。
6.日志文件分割:glog 具有自動(dòng)分割日志文件的功能,可以按照時(shí)間或大小進(jìn)行日志文件的切換和輪轉(zhuǎn),避免了日志文件過(guò)大的問題。
7.線程安全:glog 被設(shè)計(jì)為線程安全的,可以在多線程環(huán)境中使用,而不會(huì)產(chǎn)生競(jìng)爭(zhēng)條件或死鎖。線程安全是通過(guò)內(nèi)部使用互斥鎖(mutex)來(lái)實(shí)現(xiàn)的。
8.支持日志級(jí)別過(guò)濾:glog 支持根據(jù)日志級(jí)別設(shè)置過(guò)濾規(guī)則,可以控制輸出哪些級(jí)別的日志消息到終端或文件。
glog 是一個(gè)簡(jiǎn)單易用、高效可靠的 C++ 日志庫(kù)。它具有多級(jí)別日志記錄、格式化、完整調(diào)用棧、后臺(tái)線程寫入、日志文件分割等功能。
😊2. 環(huán)境配置
下面進(jìn)行環(huán)境配置:
# apt安裝
sudo apt install libgoogle-glog-dev# 源碼安裝
git clone https://github.com/google/glog.git
cd glog
mkdir build && cd build
cmake ..
make && sudo make install
編譯運(yùn)行:
g++ -o main main.cpp -lglog && ./main
😆3. 使用說(shuō)明
下面進(jìn)行使用分析:
glog基本使用示例:
#include <glog/logging.h>int main(int argc, char *argv[])
{// 初始化 Google Logging Library , argv[0] 是當(dāng)前程序的名稱google::InitGoogleLogging(argv[0]);// 設(shè)置日志輸出目錄FLAGS_log_dir = "./logs";// 標(biāo)準(zhǔn)錯(cuò)誤輸出FLAGS_logtostderr = true;// 設(shè)置日志級(jí)別,INFO 級(jí)別及以上的日志會(huì)被輸出FLAGS_minloglevel = google::INFO;// 使用宏輸出不同級(jí)別的日志LOG(INFO) << "This is an INFO level log.";LOG(WARNING) << "This is a WARNING level log.";LOG(ERROR) << "This is an ERROR level log.";// LOG(FATAL) << "This is a FATAL level log."; // 會(huì)使程序abortreturn 0;
}
// result:
// I0811 11:25:20.819756 24411 main.cpp:18] This is an INFO level log.
// W0811 11:25:20.819849 24411 main.cpp:19] This is a WARNING level log.
// E0811 11:25:20.819866 24411 main.cpp:20] This is an ERROR level log.
以上。