美团 logan库优化,让日志循环写入,保留最新的内容

修改clogan_core.c文件

clogan_write 方法

 

if (logan_model->file_len > max_file_len) {

            char *filePath = malloc(strlen(logan_model->file_path));

            memcpy(filePath, logan_model->file_path, strlen(logan_model->file_path));

            

            char *newPath = malloc(strlen(filePath)+5);

            memset(newPath, 0 , strlen(filePath)+5);

            memcpy(newPath, filePath, strlen(filePath));

            strcat(newPath, "_copy");

 

            FILE *fp_to;

            int len;                            //获取文件长度

            char *ch=NULL;            //缓存buffer

            fflush(logan_model->file);                                        //刷新文件

            

            if ((fp_to=fopen(newPath,"w+"))==NULL)                //打开目标文件

            {

                return CLOAGN_WRITE_FAIL_MAXFILE;

            }

            

            len=ftell(logan_model->file);                //获取源文件长度

            ch=(char *)malloc(sizeof(char *)*(len));                //动态分配数组长度

            memset(ch,0,len);                            //清零,否则无法将内容写入!!!

            

            rewind(logan_model->file);                            //将源文件指针复位到开头,否则写入为空!

            fread(ch,1,len,logan_model->file);                //将源文件内容写到buffer中

            fwrite(ch,1,len,fp_to);                    //将buffer中的内容写回到目标文件中

            

            fclose(logan_model->file);                            //关闭文件

            fclose(fp_to);

            

            remove(filePath);

            logan_model = NULL;

            char *filename = strrchr(filePath, '/')+1;

            clogan_open(filename);

        }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值