#include<stdio.h>#include<stdlib.h>#include<string.h>#ifdefWIN32#include<windows.h>#include<io.h>#else#include<unistd.h>#include<sys/time.h>#include<pthread.h>#defineCRITICAL_SECTIONpthread_mutex_t#define_vsnprintfvsnprintf#endif//Log{#defineMAXLOGSIZE20000000#defineMAXLINSIZE16000#include<time.h>#include<sys/timeb.h>#include<stdarg.h>charlogfilename1[]="MyLog1.log";charlogfilename2[]="MyLog2.log";staticcharlogstr[MAXLINSIZE+1];chardatestr[16];chartimestr[16];charmss[4];CRITICAL_SECTIONcs_log;FILE*flog;#ifdefWIN32voidLock(CRITICAL_SECTION*l){EnterCriticalSection(l);}voidUnlock(CRITICAL_SECTION*l){LeaveCriticalSection(l);}#elsevoidLock(CRITICAL_SECTION*l){pthread_mutex_lock(l);}voidUnlock(CRITICAL_SECTION*l){pthread_mutex_unlock(l);}#endifvoidLogV(constchar*pszFmt,va_listargp){structtm*now;structtimebtb;if(NULL==pszFmt||0==pszFmt[0])return;_vsnprintf(logstr,MAXLINSIZE,pszFmt,argp);ftime(&tb);now=localtime(&tb.time);sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);sprintf(timestr,"%02d:%02d:%02d",now->tm_hour,now->tm_min,now->tm_sec);sprintf(mss,"%03d",tb.millitm);printf("%s%s.%s%s",datestr,timestr,mss,logstr);flog=fopen(logfilename1,"a");if(NULL!=flog){fprintf(flog,"%s%s.%s%s",datestr,timestr,mss,logstr);if(ftell(flog)>MAXLOGSIZE){fclose(flog);if(rename(logfilename1,logfilename2)){remove(logfilename2);rename(logfilename1,logfilename2);}}else{fclose(flog);}}}voidLog(constchar*pszFmt,...){va_listargp;Lock(&cs_log);va_start(argp,pszFmt);LogV(pszFmt,argp);va_end(argp);Unlock(&cs_log);}//Log}intmain(intargc,char*argv[]){inti;#ifdefWIN32InitializeCriticalSection(&cs_log);#elsepthread_mutex_init(&cs_log,NULL);#endiffor(i=0;i<10000;i++){Log("ThisisaLog%04dfromFILE:%sLINE:%d\n",i,__FILE__,__LINE__);}#ifdefWIN32DeleteCriticalSection(&cs_log);#elsepthread_mutex_destroy(&cs_log);#endifreturn0;}//1-78行添加到你带main的.c或.cpp的那个文件的最前面//81-85行添加到你的main函数开头//89-93行添加到你的main函数结束前//在要写LOG的地方仿照第87行的写法写LOG到文件MyLog1.log中