- 论坛徽章:
- 0
|
贴在这记录下,免得总是printf
c文件
#include "debug.h"
#define DBG_LEVEL_CRITICAL 0
#define DBG_LEVEL_ERR 1
#define DBG_LEVEL_WARNING 2
#define DBG_LEVEL_MSG 3
#define DBG_LEVEL_TRACE 4
const char *msg_level[] = {
"CRI",
"ERR",
"WAR",
"MSG",
"TRA"
};
int dbg_comm(unsigned int level, const char *fmt, va_list arglist)
{
FILE *tg = NULL;
if(level == DBG_LEVEL_CRITICAL || DBG_LEVEL_ERR == DBG_LEVEL_ERR)
{
tg = stderr;
}
else
{
tg = stdout;
}
#ifdef OUTPUT_TIME
struct tm *time_info;
struct timeval tv = {0};
if (gettimeofday(&tv, NULL) 0)
{
perror("gettimeofday");
return -1;
}
time_info = localtime(&(tv.tv_sec));
fprintf(tg, "%02d:%02d:%02d:%06d--", time_info->tm_hour, time_info->tm_min, time_info->tm_sec, tv.tv_usec);
#endif
#ifdef OUTPUT_PID
pid_t pid;
pid = getpid();
fprintf(tg, "%5u--", pid);
#endif
#ifdef OUTPUT_TID
pid_t tid;
if((tid = syscall(SYS_gettid)) == -1)
{
perror("syscall");
tid = 65535;
}
fprintf(tg, "%5u--", tid);
#endif
fprintf(tg, "%s--", msg_level[level]);
vfprintf(tg, fmt, arglist);
return 0;
}
int dbg_trace(const char *fmt, ...)
{
int ret;
va_list arglist;
va_start(arglist, fmt);
ret = dbg_comm(DBG_LEVEL_TRACE, fmt, arglist);
return ret;
}
int dbg_msg(const char *fmt, ...)
{
int ret;
va_list arglist;
va_start(arglist, fmt);
ret = dbg_comm(DBG_LEVEL_MSG, fmt, arglist);
return ret;
}
int dbg_warning(const char *fmt, ...)
{
int ret;
va_list arglist;
va_start(arglist, fmt);
ret = dbg_comm(DBG_LEVEL_WARNING, fmt, arglist);
return ret;
}
int dbg_err(const char *fmt, ...)
{
int ret;
va_list arglist;
va_start(arglist, fmt);
ret = dbg_comm(DBG_LEVEL_ERR, fmt, arglist);
return ret;
}
int dbg_critical(const char *fmt, ...)
{
int ret;
va_list arglist;
va_start(arglist, fmt);
ret = dbg_comm(DBG_LEVEL_CRITICAL, fmt, arglist);
return ret;
}
h文件
/*****************************************
*
*
*
* ***************************************/
#ifndef __DDB_DEBUG_H__
#define __DDB_DEBUG_H__
#ifndef _GUN_SOURCE
#define _GNU_SOURCE
#endif
#include unistd.h>
#include sys/syscall.h>
#include sys/types.h>
#include stdarg.h>
#include stdio.h>
#include time.h>
#ifdef __cplusplus
extern "C" {
#endif
//config debug options here
#define OUTPUT_TIME
#define OUTPUT_PID
#define OUTPUT_TID
int dbg_trace(const char *fmt, ...);
int dbg_msg(const char *fmt, ...);
int dbg_warning(const char *fmt, ...);
int dbg_err(const char *fmt, ...);
int dbg_critical(const char *fmt, ...);
#ifdef __cplusplus
}
#endif
#endif
测试文件main.c
#include "debug.h"
int main()
{
dbg_trace("%s %d\n", "dbg_trace", 0);
dbg_msg("%s %d\n", "dbg_msg", 1);
dbg_warning("%s %d\n", "dbg_warning", 0);
dbg_err("%s %d\n", "dbg_err", 0);
dbg_critical("%s %d\n", "dbg_critical", 0);
return 0;
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93784/showart_2089676.html |
|