Linux 列印可變引數日誌

2022-03-19 12:08:06 字數 1489 閱讀 3758

實現了傳輸進去的字串所在的文件,函式和行數顯示功能。

實現了將傳入的可變引數列印到日誌功能。

#include#include

#include

const

char * g_path = "

/home/exbot/wangqinghe/log.txt";

#define log(fmt,...) my_fprintf(__file__,__function__,__line__,fmt,##__va_args__)

int my_fprintf(const

char *pfilename,const

char *pfunname,const

long lline,const

char*fmt,...)

; sprintf(szline,

"%ld

",lline);

int nlinelen =strlen(szline);

int nspacelen = 30 - nfilenamelen -nlinelen;

for(i = 0; i < nspacelen; ++i)

fprintf(fp,

"%s:%ld

",pfilename,lline);

iret =vfprintf(fp,fmt,args);

printf(

"iret = %d\n

",iret);

va_end(args);

fflush(fp);

fclose(fp);

return

iret;

}int

main()

輸出結果:

exbot@ubuntu:~/wangqinghe/c/20190703$ gcc log.c -o log

exbot@ubuntu:~/wangqinghe/c/20190703$ ./log

log.c-main-41

log.c-my_fprintf-10

iret = 25

在/home/exbot/wangqinghe/log.txt中有如下輸出結果:

簡單化版:

#include#include

#include

const

char * g_path = "

/home/exbot/wangqinghe/log.txt";

#define log(fmt,...) my_fprintf(__file__,__function__,__line__,fmt,##__va_args__)

int my_fprintf(const

char *pfilename,const

char *pfunname,const

long lline,const

char*fmt,...)

intmain()

輸出結果:

可變引數列印 解析可變引數

1.的一般用法 define str s s define cons a,b int a e b int main 2.接受,列印可變引數 參考 glibc庫的bebug函式 define printf fmt,args.printf fmt,args 使用方法 define pr debug fm...

dup函式日誌列印重定向

嵌入式裝置可能有無法實時檢視除錯列印資訊的時候,可通過將其輸出重定向到檔案中,便於後面讀取該檔案檢視列印資訊。可通過dup函式實現,下面是簡單的實現 再做些簡單說明。int main void umask old mask stdout sfd dup stdout fileno stdout nf...

可變引數實現log列印

實現步驟如下 函式原型中使用省略號 函式定義中建立乙個va list變數 3.初始化va list變數 4.訪問引數列表 5.完成清理工作 上述步驟的實現需要使用到四個巨集 va list va start va list,arg va arg va list,type va end va list...