Linux 简单打印日志(二)

复制代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
//#include<windows.h>
#include <unistd.h> // linux下头文件

#define FILE_MAX_SIZE (1024*1024)

void get_local_time(char* buffer){
    time_t rawtime;
    struct tm* timeinfo;
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    sprintf(buffer,"%04d-%02d-%02d %02d:%02d:%02d",
            (timeinfo->tm_year+1900),timeinfo->tm_mon,
            timeinfo->tm_mday,timeinfo->tm_hour,
            timeinfo->tm_min,timeinfo->tm_sec);
}

long get_file_size(char* filename){
    long length = 0;
    FILE* fp = NULL;
    fp = fopen(filename,"rb");
    if(fp != NULL){
        fseek(fp,0,SEEK_END);
        length = ftell(fp);
    }
    if(fp != NULL){
        fclose(fp);
        fp = NULL;
    }
    return length;
}

void write_log_file(char* filename,long max_size,char* buffer,unsigned buf_size){
    if(filename != NULL && buffer != NULL ){
        long length = get_file_size(filename);
        if(length > max_size){
            unlink(filename);
        }
        {
            FILE* fp;
            fp = fopen(filename,"at+");
            if(fp != NULL){
                char now[32];
                memset(now,0,sizeof(now));
                get_local_time(now);
                fwrite(now,strlen(now)+1,1,fp);
                fwrite(buffer,buf_size,1,fp);
                fclose(fp);
                fp = NULL;
            }
        }
    }
}

int main(int argc,char** argv){
    for(int i = 0; i < 10; ++i){
        char buffer[32];
        memset(buffer,0,sizeof(buffer));
        sprintf(buffer,"====>%d\n",i);
          write_log_file("log.txt",FILE_MAX_SIZE,buffer,strlen(buffer));
        sleep(1);
        //Sleep(100);
    }
    return 0;
}
复制代码

未完待续

posted @   王清河  阅读(829)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示