zoukankan      html  css  js  c++  java
  • 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
    ",i);
              write_log_file("log.txt",FILE_MAX_SIZE,buffer,strlen(buffer));
            sleep(1);
            //Sleep(100);
        }
        return 0;
    }

    未完待续

  • 相关阅读:
    09_ssh服务器的安装和使用
    08_linux下的文件压缩和解压
    38-自定义异常类
    37-手动抛出异常对象
    DataGrip 2020.1 安装与激活
    36-异常的处理
    35-异常
    node+ajax实战案例(1)
    ajax前后端交互原理(7)
    ajax前后端交互原理(5)
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11128492.html
Copyright © 2011-2022 走看看