C 日誌巨集定義

2021-08-09 23:11:30 字數 1941 閱讀 7706

專案中,無論客戶端還是服務端,日誌都是必不可少的,一般的日誌格式具備下面幾個要素:

時間,日誌等級,原始碼檔案,原始碼行數,日誌字串格式化內容。

日誌事例**:

log_err("check file failed, task id = %d, error = %d", itaskid, ierrcode);
日誌內容:

[2017-10-28 19:40:01][error][uploadclient.cpp][380] check file failed, task id = 6, error = 23

日誌巨集定義:

字串格式化資料如何作為引數傳遞,研究了不少時間~ 為啥要將日誌函式定義為巨集呢,主要是因為 __file__ 和 __line__ 這兩個引數,只有通過巨集,才能正確記錄哪個檔案,哪一行的日誌。

windows

#define log_trace(x, ...)     logtrace(__file__, __line__, x, ##__va_args__);

#define log_debug(x, ...) logdebug(__file__, __line__, x, ##__va_args__);

#define log_info(x, ...) loginfo(__file__, __line__, x, ##__va_args__);

#define log_important(x, ...) logimportant(__file__, __line__, x, ##__va_args__);

#define log_err(x, ...) logerror(__file__, __line__, x, ##__va_args__);

void logdata(const char* pfile, int iline, int itype, lpctstr lpinfo);

void logtrace(const char* pfile, int iline, lpctstr pformat, ...);

void logdebug(const char* pfile, int iline, lpctstr pformat, ...);

void loginfo(const char* pfile, int iline, lpctstr pformat, ...);

void logimportant(const char* pfile, int iline, lpctstr pformat, ...);

void logerror(const char* pfile, int iline, lpctstr pformat, ...);

linux log4cplus

#define log4_fatal(args...) log4cplus_fatal_fmt(getlogger(), ##args)

#define log4_error(args...) log4cplus_error_fmt(getlogger(), ##args)

#define log4_warn(args...) log4cplus_warn_fmt(getlogger(), ##args)

#define log4_info(args...) log4cplus_info_fmt(getlogger(), ##args)

#define log4_debug(args...) log4cplus_debug_fmt(getlogger(), ##args)

#define log4_trace(args...) log4cplus_trace_fmt(getlogger(), ##args)

通過巨集定義的日誌外掛程式 C語言

伺服器程式執行少不了日誌檔案的輸出,joyyzhang google了一下相關的外掛程式,發現實現的都太複雜,用起來也不方便,於是joyyzhang通過巨集定義實現了乙個輕量級的日誌外掛程式,只需引用其標頭檔案即可使用,還能自定義日誌的級別,用起來十分方便。標頭檔案 如下.include inclu...

C 巨集定義 巨集定義求面積

學過c語言的讀者,對巨集定義應該不陌生,同樣在c 中,也可以用巨集定義命令將乙個指定的識別符號來代表乙個字串,巨集定義的作用一般是用乙個短的名字代表乙個長的字串。一般形式為 define 識別符號 字串定義pi的符號常量 define pi 3.14在c 中還可以用 define命令定義帶引數的巨集...

C語言巨集定義和巨集定義函式

c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...