日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 打印可变参数日志

發(fā)布時間:2023/11/30 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 打印可变参数日志 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實現(xiàn)了傳輸進去的字符串所在的文檔,函數(shù)和行數(shù)顯示功能。

實現(xiàn)了將傳入的可變參數(shù)打印到日志功能。

#include<stdio.h> #include<stdarg.h> #include<string.h>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,...) {printf("%s-%s-%d\n",__FILE__,__FUNCTION__,__LINE__);int iRet = -1;int i = 0;va_list args;va_start(args,fmt);FILE* fp = NULL;fp = fopen(g_path,"at+");int nFileNameLen = strlen(pFileName);char szLine[10] = {0};sprintf(szLine,"%ld",lLine);int nLineLen = strlen(szLine);int nSpaceLen = 30 - nFileNameLen - nLineLen;for(i = 0; i < nSpaceLen; ++i){fwrite(" ",1,1,fp);}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() {char *p = "this is my first debug";printf("%s-%s-%d\n",__FILE__,__func__,__LINE__);LOG("%s %d\n",p,1);return 0; }

輸出結(jié)果:

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中有如下輸出結(jié)果:

簡單化版:

#include<stdio.h> #include<stdarg.h> #include<string.h>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,...) {printf("%s-%s-%d\n",__FILE__,__FUNCTION__,__LINE__);int iRet = -1;int i = 0;va_list args;va_start(args,fmt);FILE* fp = NULL;fp = fopen(g_path,"at+");fprintf(fp,"%s:%ld ",pFileName,lLine);iRet = vfprintf(fp,fmt,args); //使用參數(shù)列表發(fā)送格式化輸出到流stream中printf("iRet = %d\n",iRet);va_end(args);fflush(fp); fclose(fp);return iRet; }int main() {char *p = "this is my first debug";printf("%s-%s-%d\n",__FILE__,__func__,__LINE__);LOG("%s %d\n",p,1);//getchar();return 0; }

輸出結(jié)果:

?

轉(zhuǎn)載于:https://www.cnblogs.com/wanghao-boke/p/11151526.html

總結(jié)

以上是生活随笔為你收集整理的Linux 打印可变参数日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。