arm linux系統下加入glog日誌

2021-07-11 17:33:12 字數 2599 閱讀 1434

一、glog介紹

glog 是 google 開發的一種輕量級c++日誌庫,使用方法十分簡潔、用在程式中也十分的輕巧。

主要支援以下功能:

1 引數設定,通過設定標誌引數來控制日誌記錄行為;

2 嚴重性分級,根據日誌嚴重性分級記錄日誌;

3 可有條件地記錄日誌資訊;

4 條件中止程式,豐富的條件判定巨集,可預設程式終止條件;

5 異常訊號處理。程式異常情況,可自定義異常處理過程;

6 支援debug功能,可只用於debug模式;

7 自定義日誌資訊;

8 執行緒安全日誌記錄方式;

9系統級日誌記錄;

10 google perror風格日誌資訊;

11 精簡日誌字串資訊。

下面記錄一下在工作的專案中是如何使用glog的。

$ ./configure --host=arm-arago-linux-gnueabi
這裡的–host=arm-arago-linux-gnueabi指明開發的平台,如果不是在對應的arm上執行,直接執行」./configure」即可。

生成makefile,載執行make命令。會在glog當前目錄的.lib下就會有.so的動態庫libglog.so.0 。將其拷貝到目標機的/usr/lib目錄下。

注意:編譯庫和執行庫是不一樣的,執行庫是在/usr/lib,當編譯運用到glog的程式時還需要在編譯庫裡面加入libglog.so.0。在這裡的編譯庫的路徑是:/ti-sdk-am335x/linux-devkit/arm-arago-linux-gnueabi/usr/lib。否則在編譯的時候要鏈結此庫但是無法找到這個庫時是不能通過編譯的。

在makefile中需要加入對glog的鏈結關鍵字:-lglog.

三、實際運用

上述步驟完成後才能夠在程式中使用。

來看看對glog的一些初始化操作。

void int_glog(void)

; char str[256] = "mkdir ";

//獲取當前路徑

int cnt = readlink("/proc/self/exe", defpath, sizeof(defpath));

//delete the exe name

for(int i = cnt; i >= 0; --i)

}//建立log資料夾

strcat(defpath, "usr/log");

if(access(defpath, file_f_ok) != 0)

//log初始化

google::initgooglelogging("new");

flags_colorlogtostderr = true;//設定輸出到螢幕的日誌顯示相應顏色

//flags_servitysinglelog = true;// 用來按照等級區分log檔案

flags_logbufsecs = 0;//緩衝日誌輸出,預設為30秒,此處改為立即輸出

flags_max_log_size = 1; //最大日誌大小為 100mb

flags_stop_logging_if_full_disk = true;//當磁碟被寫滿時,停止日誌輸出

google::setstderrlogging(google::glog_info); //設定級別 高於 google::info 的日誌同時輸出到螢幕

//日誌名稱和輸出位址

char info[50] = ;

char warn[50] = ;

char error[50] = ;

char fatal[50] = ;

strcpy(info, defpath);

strcpy(warn, defpath);

strcpy(error, defpath);

strcpy(fatal, defpath);

strcat(info, "/info_");

strcat(warn, "/warning_");

strcat(error, "/error_");

strcat(fatal, "/fatal_");

google::setlogdestination(google::glog_info,info);

google::setlogdestination(google::glog_warning,warn);

google::setlogdestination(google::glog_error,error);

google::setlogdestination(google::glog_fatal,fatal);

log(info) <<"------------------------------"

<"---------creat log!!!---------\n ";

log(info) <<"------------------------------"

《在初始化**中呼叫了庫函式,需要把glog-0.3.3\src\glog中的標頭檔案加入到**工程檔案中,否則找不到函式定義。

本示例中執行程式後就會在所在執行程式所在資料夾下的usr/log檔案中生成日誌檔案。日誌按照不同的級別進行了分類。

ARM Linux下新增自定義系統呼叫

本文基於公司 uclinux 核心,詳細講述 3代終端 gpioctrl 的原理及應用。arm linux 的系統中斷採用產生軟中斷,查詢系統呼叫表,呼叫系統呼叫函式的方式實現系統呼叫。先講述,如何去查詢 gpioctrl 函式的實現。1.通過查詢,找到函式定義。在sg2klib.c 裡,有如下定義...

ARM Linux下交叉編譯lzo

進入lzo 2.03目錄下 lzo 2.03 configure host arm unknown linux gnu prefix home lanpeng arm lzo 引數解釋 host host arm unknown linux gnu 是你的交叉編譯工具的名字。prefix home ...

arm linux下編譯perf工具

因查詢linux系統下 kworker占用過高的原因,用perf工具來分析。perf為 linux kernel自帶的效能檢測工具。在linux3.10核心下編譯perf工具。1.cd 到 kerne tools perf路徑下 2.export path home huanghm work dsp...