#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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)