linux c写入日志文件系统时间的问题
发布网友
发布时间:2022-04-21 08:30
我来回答
共1个回答
热心网友
时间:2023-10-17 07:17
用我写的吧 实测过了的 可以直接使用
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);
}