theArcticOcean

博观而约取,厚积而薄发

打印Log

夜深了,记录一篇打印log的文章。
我们知道,在C/C++中,一些特定的宏很有用,比如__FILE__, __LINE__等,他们可以告诉我们当前程序运行的信息。另外,参数可变的函数,dateType func (char * fmt, …)让我们随心所欲的输入任意个数的参数。结合这两者的优点,可以创建显示程序运行点的log打印函数。这对于bug定位有非常重要的意义。
如下是log函数的实现:

/*
 * Log.h
 *
 *  Created on: 2017年12月8日
 *      Author: weiyang
 */

#ifndef LOG_H_
#define LOG_H_

#include <stdarg.h>
void LOGBASE(const char *file, const int line, const char *funcName, const char * fmt, ...)
{
    #define BUFFSIZE    1024
    char buffer[BUFFSIZE] = {0};
    int n = sprintf(buffer,"file: %s, line: %d, funcName: %s  ",file, line, funcName);

    va_list vap;
    va_start(vap, fmt);  //variable arguments list vap init
    vsnprintf(buffer+n, BUFFSIZE-n, fmt, vap); // add list vap to buff
    va_end(vap);
    printf("%s\n",buffer);
}

#define  LOGDBG(fmt,args...)   LOGBASE(__FILE__,__LINE__,__FUNCTION__, fmt, ##args)

#endif /* LOG_H_ */

我们使用的时候直接调用LOGBASE即可,将其当作可打印有限字节数的printf函数来用。
如:

    int bytes = write(sockfd, &ch, 1);
    LOGDBG("write bytes: %d\n", bytes);
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/theArcticOcean/article/details/78756443
文章标签: bug va-list
个人分类: C、C++学习笔记
上一篇python与正则表达式
下一篇QT HTTP接收多个数据包生成图片
想对作者说点什么? 我来说一句

android打印log工具

2018年01月31日 362KB 下载

Android log工具类

2014年03月24日 5KB 下载

没有更多推荐了,返回首页

关闭
关闭