谁有VC下的记录程序中信息的日志的例子,给我看下......
日志信息存储在 数据库,EMail ,Xml,TXT中都可以 最终能设计成一个dll,lib模块的更好
[解决办法]
- C/C++ code
//Log{#define MAXLOGSIZE 10000000#define ARRSIZE(x) (sizeof(x)/sizeof(x[0]))#include <io.h>#include <time.h>#include <stdarg.h>char logfilename1[]="MyLog1.log";char logfilename2[]="MyLog2.log";char logstr[16000];char datestr[40];char timestr[40];CRITICAL_SECTION logsec;FILE *logf;void LogV(LPCTSTR pszFmt, va_list argp){ if (pszFmt==NULL||pszFmt[0]==0) return; if (_vsnprintf(logstr, ARRSIZE(logstr), pszFmt, argp) == -1) logstr[ARRSIZE(logstr) - 1] = 0; printf("%s",logstr); logf=fopen(logfilename1,"a"); if (logf!=NULL) { if (_filelength(_fileno(logf))>MAXLOGSIZE) { fclose(logf); if (rename(logfilename1,logfilename2)) { remove(logfilename2); rename(logfilename1,logfilename2); } logf=fopen(logfilename1,"a"); if (logf==NULL) return; } _strdate(datestr);//01/25/06 datestr[2]=0;datestr[5]=0;sprintf(datestr+10,"%s%s%s",datestr+6,datestr+0,datestr+3);//060125 _strtime(timestr);//15:13:55 timestr[2]=0;timestr[5]=0;sprintf(timestr,"%s%s%s",timestr+0,timestr+3,timestr+6);//151355 fprintf(logf,"%s %s %s",datestr+10,timestr,logstr); fclose(logf); }}void Log(LPCTSTR pszFmt, ...){ va_list argp; EnterCriticalSection(&logsec); va_start(argp, pszFmt); LogV(pszFmt, argp); va_end(argp); LeaveCriticalSection(&logsec);}//Log}int main(int argc,char * argv[]){ InitializeCriticalSection(&logsec); Log("This is a Log from FILE:%s LINE:%d\n", __FILE__, __LINE__); DeleteCriticalSection(&logsec); return 0;}
[解决办法]
查一下log4cxx.