log4c日誌庫的用法,再封裝及其完整例子

2021-08-27 18:19:38 字數 3573 閱讀 5214

例子:

系統:ubuntu12.10 .

準備:安裝log4c庫, sudo apt-get install liblog4c-dev liblog4c-doc

檔案:log.h log.c 自己將log4c重新封裝的函式

test-log.c 測試用的主函式

log4crc 配置檔案(xml,照著寫就行)

#ifndef _log_h_

#define _log_h_

#include

#include

#ifdef __cplusplus

extern "c"

#endif

#define log_pri_error log4c_priority_error

#define log_pri_warn log4c_priority_warn

#define log_pri_notice log4c_priority_notice

#define log_pri_debug log4c_priority_debug

#define log_pri_trace log4c_priority_trace

extern int log_open(const char *category);

extern void log_message(int priority ,const char* fmt, ...);

extern void log_trace(const char *file , int line , const char *func, const char *fmt ,...);

extern int log_close();

#define log_error(fmt , args...) \

log_message(log_pri_error, fmt, ##args)

#define log_warn(fmt, args...) \

log_message(log_pri_warn, fmt , ##args)

#define log_notice(fmt , args...) \

log_message(log_pri_notice, fmt , ##args)

#define log_debug(fmt , args...) \

log_message(log_pri_debug, fmt , ##args)

#define log_trace(fmt,args...) \

log_trace(__file__ , __line__ , __function__ , fmt ,## args)

#endif

#include

#include

#include "log.h"

static log4c_category_t *log_category = null;

int log_open(const char *category)

log_category = log4c_category_get(category);

return 0 ;

}

void log_message(int priority , const char *fmt , ...)

void log_trace(const char *file, int line, const char *fun,

const char *fmt , ...)

int log_close()

#include

#include "log.h"

int main(void)

//配置檔案,預設名為log4crc

<?xml version="1.0" encoding="iso-8859-1"?>

0

0

1

編譯命令:

gcc test-log.c log.c -o test-log -llog4c

執行效果

./test-log

[stdout] trace    mycat - [file:test-log.c, line:7, function:main]trace

[stdout] error    mycat - error

[stdout] warn     mycat - warn

[stdout] notice   mycat - notice

[stdout] debug    mycat - hello log4c!

講解:log.h與log.c裡面用法也很簡單

log_open("category_name"); //category_name一定得是log4crc裡面已經定義的category.

關於配置檔案log4crc

更複雜的配置參見:

配置檔案的搜尋是由log4c_rcpath環境變數決定。搜尋的配置檔案名為log4crc(不知道能否改變,沒研究過)

配置檔案中category的priority不知道是什麼意思,,反正好像沒什麼用。不管設定成什麼,好像都不影響。

環境變數:

如果有什麼問題,可以一起討論下。若有什麼錯誤,請各位指出。謝謝!

轉 c 開源日誌庫log4cplus 封裝

cpp view plain copy log.h inte ce for the log class.if defined afx log h b87f71e3 ffae 4cfa a528 3f4f2ff7d69e included define afx log h b87f71e3 ffae ...

log4c 在程式中設定日誌檔名

使用過log4c的人都知道,log4c的需要引數是通過logcrc配置檔案設定的。例如 紅色字的設定的日誌檔案的名稱。如果日誌檔案名字在程式就不能改變了。我想要通過程式改變日誌檔案的名字。在網上查了一下,寫的都比較基礎。外文的資料也懶得去看。看了log4c的例子裡也沒有介紹。所以自己研究了一下原始碼...

log4cpp 日誌庫的使用

平時除錯c c程式和記錄一些程式列印資訊時,使用的最多的就是printf,但是終端顯示有限,而且不利於統計,所以想把開源的日誌庫加入到工程中 測試對比了一些日誌庫,發現log4cpp比較適合我們的工程。1 可以自由控制日誌在終端和日誌中的輸出,同時或只記錄在檔案 2 有配置檔案,只需修改配置檔案即可...