用C11打印日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C11打印日志相关的知识,希望对你有一定的参考价值。

以下是使用C11特性打印日志的方法

#include <stdio.h>
#include <time.h>

static const int MAX_FILE_NAME_LEN = 512;    // 文件名长度最大值

int main(int argc, char * argv[])
{
    // 获取当前时间
    time_t seconds_number = time(NULL);

    tm local_time;

    localtime_s(&local_time, &seconds_number);

    // 当前日期
    char date[11];

    if (0 == strftime(date, sizeof(date), "%F", &local_time))
    {
        printf_s("File:%s Line:%ld 获取日期失败\n", __FILE__, __LINE__);
        return -1;
    }

    // 当前日期时间
    char date_time[20];

    if (0 == strftime(date_time, sizeof(date_time), "%F %T", &local_time))
    {
        printf_s("File:%s Line:%ld 获取日期时间失败\n", __FILE__, __LINE__);
        return -1;
    }

    // 获取日志文件名
    char file_name[MAX_FILE_NAME_LEN];

    // Expression:("Buffer is too small", 0)
    sprintf_s(file_name, sizeof(file_name), "Common_%s.txt", date);

    // 打开文件
    FILE * fd;

    if (fopen_s(&fd, file_name, "a") != 0)
    {
        printf_s("File:%s Line:%ld 打开文件%s失败\n", __FILE__, __LINE__, file_name);
        return -1;
    }

    // 打印日志
    fprintf_s(fd, "%s\n", date_time);

    // 关闭文件
    fclose(fd);

    return 0;
}

 

以上是关于用C11打印日志的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

C11 多线程有关问题?实在是纠结了很久!

webstorm代码片段的创建

GNU C编译器的gnu11和c11

C11简洁之道:函数绑定

常用python日期日志获取内容循环的代码片段