博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C 实现的 日志模块
阅读量:4005 次
发布时间:2019-05-24

本文共 2667 字,大约阅读时间需要 8 分钟。

C 实现的 日志模块

2012年9月5日
#include#include#include#include#include#includechar cLastFileName[128];FILE *fLogLast=NULL;/** to get the time*/int GetCurrentTime(char *outtime){    struct tm *newtime;    time_t aclock;    int year;    char curtime[30];    aclock=time(NULL);    newtime=localtime(&aclock);    year=newtime->tm_year+1900;    snprintf(curtime,sizeof(curtime),"%.4d-%.2d-%.2d %.2d:%.2d:%.2d",        year,newtime->tm_mon+1,newtime->tm_mday,        newtime->tm_hour,newtime->tm_min,newtime->tm_sec);    memcpy(outtime,curtime,20);    return 0;}int WriteLog(const char * sector,...){    char Filename[128];    FILE *fp=NULL;    char curtime[30];    char titlestr[128];    char infoline[128];    char datestr[11];    char pidstr[32];    memset(Filename,0,128);    memset(curtime,0,30);    memset(titlestr,0,128);    memset(infoline,0,128);    memset(datestr,0,11);    memset(pidstr,0,32);    va_list arg_ptr;    char * arg = "";   char  str_log[1024];    char  ctime[128];    memset(str_log,0,1024);    memset(ctime,0,128);    /*to get the variable */    va_start(arg_ptr,sector);    snprintf(pidstr,sizeof(pidstr),"[pid:%d] ", getpid());    snprintf(titlestr,sizeof(titlestr),"[%s] ",sector);    GetCurrentTime(curtime);    snprintf(ctime,sizeof(ctime),"[%s] ",curtime);    //printf("ctime:%s\n",ctime);    memcpy(datestr, curtime, 10);datestr[10]='\0';    if( (sector == NULL) ){        return 1;    }    else{            strcat(str_log,ctime);            strcat(str_log,pidstr);            strcat(str_log,titlestr);            while(arg != NULL){                        strcat(str_log,arg);                        arg = va_arg(arg_ptr,char*);            }            va_end(arg_ptr);            strcat(str_log,"\n");    }    //inorder to get the right name for logfile    snprintf(Filename,sizeof(Filename),"test_lve%s.log", datestr);    if(strcmp(Filename,cLastFileName)!=0)    {        if(!fLogLast)        {            fp=fopen(Filename,"a");            fLogLast=fp;            snprintf(cLastFileName,sizeof(cLastFileName),"%s",Filename);        }        else        {            fclose(fLogLast);            fLogLast=NULL;            fp=fopen(Filename,"a");            fLogLast=fp;            snprintf(cLastFileName,sizeof(cLastFileName),"%s",Filename);        }    }    else    {        fp=fLogLast;    }   if(fp==NULL)    {        fprintf(stderr,"pid %d log deal fail\n",getpid());        return 1;    }    //printf("str_log:%s\n",str_log);    fputs(str_log,fp);    fflush(fp);    //fclose(fp);    return 0;}/*测试*/int main(){    WriteLog("test","log",NULL);    return 0;}

运行后,出现日志

test_lve2012-09-05.log
2012-09-05 16:03:25] [pid:7780] [test] log

如上的日志显示格式。

转载地址:http://tlgyi.baihongyu.com/

你可能感兴趣的文章
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Android(三) 数据存储之二 SharedPreferences
查看>>
Android(三)数据存储之三SQLite嵌入式数据库
查看>>
Tomcat 6 数据源配置详解
查看>>
『网页制作』页面滚动HTML代码
查看>>
request得到select多选的值
查看>>
WSDL详解
查看>>
struts标签介绍大全
查看>>
logic:iterate用法详解
查看>>
关于导出数据为Excel的几种方式
查看>>
Display Tag使用小记
查看>>
如何给按钮加上链接功能
查看>>
深入MySQL数据库的索引
查看>>
Hashtable和HashMap的区别
查看>>
深入MySQL数据库的索引
查看>>