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); } } }
  • 相关阅读:
    java 8
    内存溢出VS内存泄漏
    dubbo zk 分布式服务项目搭建与配置
    转发 VS 重定向
    过滤器
    Synchronized
    java 泛型
    spring 整合 mongo
    泛型
    反虚拟机
  • 原文地址:https://www.cnblogs.com/dpf-10/p/5869695.html
Copyright © 2011-2022 走看看