zoukankan      html  css  js  c++  java
  • linux C/C++ 日志打印函数

    //宏定义日志文件名
    #define PROCESSNAME  "log_filename"


    //当日志文件大于5M时,会删除该文件,该接口使用方法 参照printf
    void
    WriteLog(const char *fm, ...) { int buflen = 5120; char buf[buflen]; int i = 0; memset(buf, 0, buflen); va_list args; va_start( args, fm ); vsnprintf(buf, buflen, fm,args); va_end( args ); printf("%s ", buf); FILE* logfile=NULL; char logpath[128] = {0}; snprintf(logpath,sizeof(logpath),"/var/log/"); if(access(logpath,0)!=0) { char cmdstr[256] = {0}; sprintf(cmdstr,"mkdir -p %s",logpath); system(cmdstr); } char fname[256]; char longtime[200]; time_t t; memset(fname,0,sizeof(fname)); time(&t); struct tm local = {0}; localtime_r(&t, &local); sprintf(longtime,"%04d-%02d-%02d %02d:%02d:%02d", local.tm_year+1900, local.tm_mon+1, local.tm_mday, local.tm_hour, local.tm_min, local.tm_sec); sprintf(fname,"%s/%s", logpath, PROCESSNAME); for(i= 0; i < 3; i++) { logfile = fopen(fname, "ab"); if(logfile) break; sleep(1); } if(logfile) { // 判断文件大小 if (ftell(logfile) < 5*1024*1024) // 5M { //日期时间 const char* pTemp = longtime; fwrite(pTemp, 1, strlen(pTemp), logfile); fwrite(" ", 1, 1, logfile); //内容 fwrite(buf, 1, strlen(buf), logfile); fwrite(" ", 1, 3, logfile); fclose(logfile); } else { fclose(logfile); remove(fname); } } }
  • 相关阅读:
    2012工作计划!
    造船篇系统实施(新老衔接工作)
    Android学习摘要一之Android历史
    DEVReport控件使用方法
    造船篇 前传
    软件实施(1)
    茫然疑问未来
    造船篇钢材管理
    wcf身份验证问题
    IDL中关于波段计算的问题
  • 原文地址:https://www.cnblogs.com/dpf-10/p/5869695.html
Copyright © 2011-2022 走看看