首页 > 代码库 > 用C11打印日志

用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打印日志