栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言中定义附带时间(毫秒)的打印Log的宏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言中定义附带时间(毫秒)的打印Log的宏

1. 需求

* 有时候程序调试的时候,需要打印出附带时间点的log 信息,本例中给出一种实现

2. 实现: 宏 +  printf

* 2.1 声明部分

extern char* getCurrentTime();

#define PRINTVV(format, ...)
        printf("%s Func=[%s], Line=[%d] " format"n", getCurrentTime(), __FUNCTION__, __LINE__, ## __VA_ARGS__)

//For print log
#define PRINT() PRINTVV();
#define PRINTV(v) PRINTVV("value=[%s]", (v))
#define PRINTVN(v) PRINTVV(""#v"=[%s]", (v))
#define PRINTI(v) PRINTVV(""#v"=[%d]", (int)(v))
#define PRINTU(v) PRINTVV(""#v"=[%lu]", (v))
#define PRINTP(v) PRINTVV(""#v"=[%p]", (v))

2.2 实现部分-获取时间时,增加了‘锁’

#include

#define PRINT_LEN 1024

pthread_mutex_t mutex;
static int mutex_inited = 0;
static char time_buf[PRINT_LEN] = {0};
char* getCurrentTime()
{
    if (mutex_inited == 0) {
        mutex_inited = 1;
        pthread_mutex_init(&mutex, NULL);
    }

    pthread_mutex_lock(&mutex);

    time_t t;
    struct tm * lt;
    struct  timeb   stTimeb;
    ftime(&stTimeb);
    time (&t);
    lt = localtime (&stTimeb.time);
    sprintf(time_buf, "%d-%d-%d %d:%02d:%02d.%u", lt->tm_year+1900, lt->tm_mon + 1, lt->tm_mday, 
                lt->tm_hour, lt->tm_min, lt->tm_sec, stTimeb.millitm);
    
    pthread_mutex_unlock(&mutex);
    return time_buf;
}
 

3. 使用

* 使用下面的宏打印:空行、int、string等。

#define PRINT() PRINTVV();
#define PRINTV(v) PRINTVV("value=[%s]", (v))
#define PRINTVN(v) PRINTVV(""#v"=[%s]", (v))
#define PRINTI(v) PRINTVV(""#v"=[%d]", (int)(v))
#define PRINTU(v) PRINTVV(""#v"=[%lu]", (v))
#define PRINTP(v) PRINTVV(""#v"=[%p]", (v))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号