这里简单分享一个我自己用的一个极简的log模块:log颜色可设置、带时间戳、文件、行号、函数。
这个log模块仅包含log.h与log.c两个文件。
log模块代码
log.h:
#ifndef LOG_H
#define LOG_H
#ifdef __cplusplus
extern “C” {
#endif
#define LOG_BUF_SIZE 1024
typedef long long (*get_sys_time_ms_def)(void);
enum log_color
{
COLOR_NULL = 0,
RED = 1,
GREEN = 2,
YELLOW = 3,
BLUE = 4
};
void log_print(enum log_color color, const char *file, int line, const char *func, const char* fmt, …);
void log_time_register(get_sys_time_ms_def p_get_sys_time_ms);
#define LOG_D(…) log_print(BLUE, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif
log.c:
#include <stdio.h>
#include <stdarg.h>
#include “log.h”
static long long default_get_sys_time_ms(void)
{
return (long long)0;
}
static get_sys_time_ms_def s_get_sys_time_ms = default_get_sys_time_ms;
void log_time_register(get_sys_time_ms_def p_get_sys_time_ms)
{
s_get_sys_time_ms = p_get_sys_time_ms;
}
void log_print(enum log_color color, const char *file, int line, const char *func, const char* fmt, …)
{
va_list ap;
char buf[LOG_BUF_SIZE] = {0};
long long time = s_get_sys_time_ms();
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);<