最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

linux c之LOG文件的存储

XAMPP新闻 admin 563浏览 0评论

linux c之LOG文件的存储

#成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

 

因为之前从事嵌入式单片机工作,单片机性能与存储都是很低的,所以基本不会应用到LOG存储,调试就靠printf。

但现在步入嵌入式GPU阶段需要摒弃一些单片机开发的固有思想,适当的存储关键LOG信息,能够在有问题的时候,及时定位问题,所以有了下面的示例代码。

 

需求:

如何编写以日期为文件名称的log文件呢?

 

分析:

  1. 需要拿到当前的时间
  2. 需要建立文件
  3. 需要将时间转换成文件名称

 

当我们能够根据需求梳理出代码思路,完成只是时间问题。

 

#include <stdio.h>
#include <time.h>
#include <sys/time.h>
/*
 *1.Coordinated Universal Time(UTC):世界标准时间,格林威治标准时间,中国UTC+8
 *2.Calendar Time:日历时间
 *3.epoch:时间点
 *4.clock tick:时钟计时单元
 *
 *常用time()函数,用来计算1970-01-01 00:00:00到现在的秒数,常配合localtime使用
 *localtime()函数,返回以tm结构表达式的时间。
 *ctime()函数,
 *gettimeofday()函数,获取精确时间,最高精度可达到微秒,一般用于计算函数运行耗时等
 *
 *日志文件常用strftime()函数,将时间格式化为字符串。
 */
int main(int argc, char **argv)
{
    struct timeval tv_begin, tv_end;    //定义gettimeofday的timeval结构体
    //函数原型time_t time(time_t *timer)
    time_t currTime;
    unsigned long T;
    T = time(&currTime);    //time()获取的是从1970-01-01 00:00:00到现在的秒数,返回值是unsigned long类型。
    printf("%ld \n", T);

    struct tm *Now;         //定义localtime函数的tm结构体指针
    Now = localtime(&currTime);
    printf("本地时间:%s \n", asctime(Now));
    printf("当前时间: %s \n", ctime(&currTime));
    /* 用来精确程序运行时间  */
    gettimeofday(&tv_begin, NULL);
    printf("测试打印语句的时间\n");
    gettimeofday(&tv_end, NULL);

    printf("毫秒:%d\n", (tv_end.tv_sec - tv_begin.tv_sec));
    printf("微秒:%ld\n", (tv_end.tv_usec - tv_begin.tv_usec));

    /* 利用strftime()将存储地址与日期格式化为字符串 */
    char name[256] = {0};      
    strftime(name, sizeof(name), 
            "/home/racobit/jiafeng/racobit/time/LOG/%Y.%m.%d.txt",
            localtime(&currTime));
    printf("name : %s \n", name);

    /*  调用文件读写创建日志文件  */
    FILE *fp = NULL;
    fp = fopen(name, "a");
    fputs("我想要写log: ", fp);
    fprintf(fp, "%s\n", asctime(Now));
    fclose(fp);
    
    return 0;
}

运行输出:

zzzzzs0000063

可以在LOG文件夹看到,输出的文件(昨天输出了一些)

zzzzzs00000063

我们需要了解的是

    fp = fopen(name, "a"); // "a"是没有该文件,创建文件

所以,当我们只要以年月日为文件名称,每天就会创建一个新的log文件。

 

LOG文件每天独立存储到此就完成了!可一直存储,内存总有满的一天,所以最好还是要写一个shell脚本,用来管理log文件。

预知shell脚本,请看下次分解。

 

End 2021/7/5 21:57

转载请注明:XAMPP中文组官网 » linux c之LOG文件的存储

您必须 登录 才能发表评论!