日志等级输出

1. debug.h 代码

typedef enum {
    LOG_LEVER_INFO = 0,
    LOG_LEVER_WARN = 1,
    LOG_LEVER_DBG  = 2,
    LOG_LEVER_ERR  = 3,
    LOG_LEVER_MAX
} LOG_LEVER_E;

void debugOut(LOG_LEVER_E lever, const char *fmt, ...);

2. common.h 代码

typedef struct {
    unsigned int id;
    char        *info;
} IdTable;

3. debug.c 代码

#include "debug.h"

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

#include "common.h"

#define LOG_MAX_LEN  400

IdTable g_levelTbl[] = {
    {LOG_LEVER_INFO,  "[INFO]"},
    {LOG_LEVER_WARN,  "[WARN]"},
    {LOG_LEVER_DBG,   "[DBG]"},
    {LOG_LEVER_ERR,   "[ERR]"},
};

void debugOut(LOG_LEVER_E lever, const char *fmt, ...)
{
    if (lever >= LOG_LEVER_MAX) {
        return;
    }

    char res[LOG_MAX_LEN] = {0};
    char *logLever = g_levelTbl[lever].info;
    int ret = sprintf_s(res, LOG_MAX_LEN, "%s:", logLever);
    if (ret < 0) {
        printf("debug lever string is overflow: %d\n", ret);
        return;
    }
    unsigned int left = ret;
    va_list arg_list;
    va_start(arg_list, fmt);
    ret = sprintf_s(res + left, LOG_MAX_LEN - left, fmt, arg_list);
    va_end(arg_list);
    if (ret < 0) {
        printf("debug string is overflow: %d\n", ret);
        return;
    }
    printf("%s\n", res);
}

4. 主函数

int main() {
    debugOut(LOG_LEVER_INFO, "test debug out");
    return 0;
}

5. 运行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值