Linux下写日志文件

void WriteLog(const char *fm,...)__attribute__((format(printf,1,2)));

 

void WriteLog(const char *fm,...)
{
 int iSize=0;
 char buff[10*1024];
 int i=0;
 memset(buff,0,sizeof(buff));
 char chTime[32]={0};
 time_t now;
 struct tm timenow;
 time(&now);
 localtime_r(&now,&timenow);
 sprintf(chTime,"%04u-%02u-%02u %02u:%02u:%02u",1900+timenow.tm_year
 ,timenow.tm_mon+1,timenow.tm_mday,timenow.tm_hour,timenow.tm_min,timenow.tm_sec);
 i=sprintf(buff,"%s/t",chTime);
 va_list args;
 va_start(args,fm);
 iSize=vsnprintf(buff+i,sizeof(buff)-(i+1),fm,args);
 va_end(args);
 if(iSize>-1&&iSize<(int)(sizeof(buff)-(i+1)))
 {
  iSize+=i;
  buff[iSize]='/n';
  iSize++;
 }
 else
 {
  iSize=sprintf(buff,"%s/tWriteLog error,iSize %d",chTime,iSize);
 }
 cout<<buf;
 char curData[16];
 char fileName[3000];
 GetCurData(curData);
 memset(fileName,0,sizeof(fileName));
 int j=0;
 j=sprintf(fileName,"%s",PATH_LOG);
 j+=sprintf(fileName+j,"%s",TYPE_LOG);
 CheckFolder(fileName);
 j+=sprintf(fileName+j,"/%s_%s%s",TYPE_LOG,curData,".log");
 AppendToFile(fileName,buff,iSize);
 return;
}

 

 

void GetCurData(char *curData)
{
 time_t lTime;
 struct tm tmTime;
 time(&lTime);
 localtime_r(&lTime,&tmTime);
 tmTime.tm_min-=3;
 time_t newtime=mktime(&tmTime);
 localtime_r(&newtime,&tmTime);
 strftime(curData,16,"%Y%m%d",&tmTime);
}

 

 

bool CheckFolder(const char *sPathName)
{
 char DirName[256];
 strcpy(DirName,sPathName);
 int i,len=strlen(DirName);
 if(DirName[len-1]!='/')
  strcat(DirName,"/");
 len=strlen(DirName);
 for(i=1;i<len;i++)
 {
  if(DirName[i]=='/')
  {
   DirName[i]=0;
   if(access(DirName,0)!=0)
   {
    if(mkdir(DirName,0755)==-1)
    {
     perror("mkdir error");
     return false;
    }
   }
   DirName[i]='/';
  }
 }
 return true;
}

 

 

 

bool AppendToFile(const char *fileName,const char *content,size_t fileLength)
{
 FILE *fp=NULL;
 try
 {
  fp=fopen(fileName,"ab");
  if(fp==NULL)
  {
   return false;
  }
  if(ftell(fp)<50*1024*1024)
  {
   fwrite(content,1,fileLength,fp);
  }
  fclose(fp);
 }
 catch(...)
 {
  fclose(fp);
  return false;
 }
 return true;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值