C日志管理

版权声明:本文原创,转载请告知 https://blog.csdn.net/qq_35099224/article/details/90019619

log.h

#ifndef __LOG_H __
#define __LOG_H __

/* debug level */
#define LEVEL_INFOR 0x01
#define LEVEL_WARNING 0x02
#define LEVEL_ERROR 0x04
#define LEVEL_CRITICAL 0x08

void init_log();
void LOG(char* file_name, int line, charfunc, int level, char fmt, …);

#define LOGINFO(fmt, …) LOG(__FILE __, __LINE __, __FUNCTION __, LEVEL_INFOR, fmt, ##__VA_ARGS __)
#define LOGWARNING(fmt, …) LOG(__FILE __, __LINE __, __FUNCTION __, LEVEL_WARNING, fmt, ##__VA_ARGS __)
#define LOGERROR(fmt, …) LOG(__FILE __, __LINE __, __FUNCTION __, LEVEL_ERROR, fmt, ##__VA_ARGS __)
#define LOGCRITICAL(fmt, …) LOG(__FILE __, __LINE __, __FUNCTION __, LEVEL_CRITICAL, fmt, ##__VA_ARGS __)

#endif


log.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>

#include “log.h”

#ifndef WIN32
#include <sys/time.h>
#endif

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

/* debug level define */
int g_dbg_level = LEVEL_INFOR | LEVEL_WARNING | LEVEL_ERROR | LEVEL_CRITICAL;
FILE *g_log_fp = NULL;

// __FUNCTION __, __FILE __, __LINE __
void
LOG(char* file_name, int line, char* func, int level, char* fmt, …)
{
char buf[256];
va_list args;
va_start(args, fmt);
vsnprintf(buf, 256, fmt, args);
va_end(args);

time_t t = time(NULL);
struct tm *tmm = localtime(&t);
if (g_dbg_level & level) {
	printf("[%d-%02d-%02d %02d:%02d:%02d][%s][%s:%d]:%s\n", 
		tmm->tm_year + 1900, tmm->tm_mon + 1, tmm->tm_mday, 
		tmm->tm_hour, tmm->tm_min, tmm->tm_sec, 
		func, file_name, line, buf);
}
	

if ((g_log_fp != NULL) && (level >= LEVEL_CRITICAL)) {
	fprintf(g_log_fp, "[%d-%02d-%02d %02d:%02d:%02d][%s][%s:%d]:%s\n", 
		tmm->tm_year + 1900, tmm->tm_mon + 1, tmm->tm_mday, 
		tmm->tm_hour, tmm->tm_min, tmm->tm_sec,
		func, file_name, line, buf);
}

}

void
init_log() {

}

猜你喜欢

转载自blog.csdn.net/qq_35099224/article/details/90019619