mirror of
https://gitee.com/Lamdonn/varch.git
synced 2025-12-06 16:56:42 +08:00
2.7 KiB
2.7 KiB
介绍
vlog是一个简单的日志输出模块,采用的是通道过滤模式,也就是提供了多个通道的日志输出,只有该通道使能了才会有日志输出。
接口
vlog日志输出
int vlog(vlogChnType channel, const char *format, ...);
channel提供了8个通道
#define VLOG_CHANNEL_0
#define VLOG_CHANNEL_1
#define VLOG_CHANNEL_2
#define VLOG_CHANNEL_3
#define VLOG_CHANNEL_4
#define VLOG_CHANNEL_5
#define VLOG_CHANNEL_6
#define VLOG_CHANNEL_7
可以进行多通道的输出,通过 | 连接则进行多通道的输出。
默认是只打开了 VLOG_CHANNEL_0。
static void test_vlog(void)
{
vlog(VLOG_CHANNEL_0, "[VLOG_CHANNEL_0] vlog!\r\n");
vlog(VLOG_CHANNEL_1, "[VLOG_CHANNEL_1] vlog!\r\n");
vlog(VLOG_CHANNEL_2, "[VLOG_CHANNEL_2] vlog!\r\n");
}
结果:
[VLOG_CHANNEL_0] vlog!
vlog设置和获取通道过滤器
void vlog_set_filter(vlogChnType mask);
vlogChnType vlog_get_filter(void);
其分别可以设置和获取开放的通道过滤器。 为了更简便,提供了如下宏定义方法可以打开和关闭指定通道。
#define VLOG_ENABALE(c)
#define VLOG_DISABALE(c)
static void test_channel(void)
{
VLOG_DISABALE(VLOG_CHANNEL_0);
VLOG_ENABALE(VLOG_CHANNEL_1);
vlog(VLOG_CHANNEL_0, "[VLOG_CHANNEL_0] vlog!\r\n");
vlog(VLOG_CHANNEL_1, "[VLOG_CHANNEL_1] vlog!\r\n");
vlog(VLOG_CHANNEL_2, "[VLOG_CHANNEL_2] vlog!\r\n");
}
结果:
[VLOG_CHANNEL_1] vlog!
vlog控制台输出
int vlog_set_console(vlogChnType channel, int console);
此方法是设置指定通道是否开启控制台输出,默认各个通道都已经打开控制台输出。
vlog离线保存
int vlog_set_offline(vlogChnType channel, const char *filename);
此方法可以开始离线保存和停止离线保存(传入空文件名)。
static void test_offline(void)
{
vlog_set_offline(VLOG_CHANNEL_0, "./test/file/log.txt");
for (int i = 0; i < 10; i++)
{
vlog(VLOG_CHANNEL_0, "vlog %d!\r\n", i);
}
vlog_set_offline(VLOG_CHANNEL_0, NULL);
}
结果: link
vlog函数回调
int vlog_set_func(vlogChnType channel, vlogFuncType func);
此方法设置vlog回调函数,提供了更大的灵活度。也就是函数vlog内容会输出到回调函数。
typedef void (*vlogFuncType)(char *buf, int len);
vlog获取通道状态
vlogChnType vlog_get_console(void);
vlogChnType vlog_get_offline(void);
vlogChnType vlog_get_func(void);
其分别可以获取3种输出方向的各个通道状态掩码。