C语言写日志库时怎样做到能每天生成一个新文件,甚至能删除很旧的日志?

C语言写日志库时怎样做到能每天生成一个新文件,甚至能删除很旧的日志?,第1张

#include <册返stdio.h>

#include <time.h>

int main()

{

FILE *fp = NULL

char logName[20]={0}

time_t timep

struct tm *p

time(&timep)

p = gmtime(&timep)

sprintf(logName,"%d%02d%02d.txt",(1900+p->tm_year), (1+p->tm_mon), p->tm_mday)

fp = fopen(logName,"a+")

fputs("test log\n",fp)

fclose(fp)

return 0

}

//每天创建一个新文件,当天日志都会追加到这个文件

至于正姿凳删除文件也是一个道理,只要举旅知道你要删除多少天前的,

拼接出名字直接删除就好

如果是程序内部写了log函数,那么应该可以在程序中设置指定咐首罩文件。

如果只是用fprintf(stderr,...)等。那么可以在执行芹悔程序时重定向输衡闹出。比如

./yourprogram >&/d/1.txt即可。

用我写的吧 实测过了的 可以直接使圆搭用

void WriteSysLog(char *str)

{

char buf[512]

long MAXLEN = 10*1024*1024//10MB

time_t timep

FILE *fp = NULL

struct tm *p

time(&timep)

p = localtime(&timep)

memset(buf,0,sizeof(buf))

sprintf(buf,"%d-%d-%d %d:%d:%d : ",(1900+p->tm_year),(1+p->tm_mon),\

p->tm_mday,p->御明tm_hour, p->tm_min, p->tm_sec)//星期p->tm_wday

strcat(buf,str)

strcat(buf,"\r\n")

fp = fopen("./syslog.log","r")

if(fp==NULL)

{

fp = fopen("./syslog.log","w+")

}

else

{

fseek(fp,0,2)

if(ftell(fp) >= MAXLEN)

{

fclose(fp)

fp = fopen("./syslog.log","w+")

//镇腔告大于10MB则清空原日志文件

}

else

{

fclose(fp)

fp = fopen("./syslog.log","a")

}

}

fwrite(buf,1,strlen(buf),fp)

fflush(fp)

fsync(fileno(fp))

fclose(fp)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8158105.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存