写程序的日志到文件
来源:互联网 发布:js监听css3动画结束 编辑:程序博客网 时间:2024/05/10 13:36
<p>#include <stdio.h>#include <stdlib.h>#include <string.h>#ifdef WIN32 #include <windows.h> #include <io.h>#else #include <unistd.h> #include <sys/time.h> #include <pthread.h> #define CRITICAL_SECTION pthread_mutex_t #define _vsnprintf vsnprintf#endif//Log{#define MAXLOGSIZE 20000000#define MAXLINSIZE 16000#include <time.h>#include <sys/timeb.h>#include <stdarg.h>char logfilename1[]="MyLog1.log";char logfilename2[]="MyLog2.log";static char logstr[MAXLINSIZE+1];char datestr[16];char timestr[16];char mss[4];CRITICAL_SECTION cs_log;FILE *flog;#ifdef WIN32void Lock(CRITICAL_SECTION *l) { EnterCriticalSection(l);}void Unlock(CRITICAL_SECTION *l) { LeaveCriticalSection(l);}#elsevoid Lock(CRITICAL_SECTION *l) { pthread_mutex_lock(l);}void Unlock(CRITICAL_SECTION *l) { pthread_mutex_unlock(l);}#endifvoid LogV(const char *pszFmt,va_list argp) { struct tm *now; struct timeb tb;</p><p> 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); } }}void Log(const char *pszFmt,...) { va_list argp;</p><p> Lock(&cs_log); va_start(argp,pszFmt); LogV(pszFmt,argp); va_end(argp); Unlock(&cs_log);}//Log}int main(int argc,char * argv[]) { int i;#ifdef WIN32 InitializeCriticalSection(&cs_log);#else pthread_mutex_init(&cs_log,NULL);#endif for (i=0;i<10000;i++) { Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__); }#ifdef WIN32 DeleteCriticalSection(&cs_log);#else pthread_mutex_destroy(&cs_log);#endif return 0;}//1-74行添加到你带main的.c或.cpp的那个文件的最前面//78-81行添加到你的main函数开头//85-89行添加到你的main函数结束前//在要写LOG的地方仿照第87行的写法写LOG到文件MyLog1.log中</p>
0 0
- 写程序的日志到文件
- 程序的中写日志文件
- 写日志到专案目录下的txt文件中
- slf4j将日志写到单独的文件
- 记一次log4j日志写到错误文件的问题
- c++ 日志(写到文件)
- CDbLogRoute写日志文件到MySQL数据库
- 使用Log4j.jar写日志到文件
- java异步写日志到文件中
- 多线程写到一个日志文件中
- Log4j.jar不同的日志分别写到不同的日志文件
- C# 写程序日志 log文件
- storm写log4j的日志发现不能写到文件里
- 写文件方式的日志
- 写操作系统的日志文件
- 写日志文件的代码
- 执行系统命令并且将输出写到指定日志文件的shell脚本(1)
- 执行系统命令并且将输出写到指定日志文件的shell脚本(2)
- maven中把依赖的JAR包一起打包
- 【Actcl阶乘】#ULR 1 A. Factorial
- 并行计算、分布式计算、网格计算、云计算区别和联系
- sqlite3自增key设定(创建自增字段)
- 位与字节
- 写程序的日志到文件
- Android 实现UPNP功能
- json字符串与JSON对象
- 【简单数论】#60 A. Harry Potter and Three Spells
- 【问题】"Undefined symbols for architecture armv7"
- Hadoop 中的两表join
- [经典文章翻译]A Crash Course on the Depths of Win32 Structured Exception Handling
- 奇异值分解
- cocos2d-x3.0 Xcod下错误解析