#include "log.h"

static LogLevel current_level  = LOG_DEBUG;

void log_set_level(LogLevel level){
		current_level = level;
}


// 内部公共函数：处理日志级别检查和实际打印
static void _log_print(LogLevel level, const char *tag, const char *fmt, va_list args) {
    if (current_level <= level) {
        u1_printf("[%s] ", tag);      // 打印日志标签（如 DEBUG, INFO）
        u1_vprintf(fmt, args);        // 打印用户传入的格式化内容
        u1_printf("\r\n");            // 换行
    }
}
// 各日志级别的函数（只需调用 _log_print）
void log_debug(const char *fmt, ...) {
    va_list args;
    va_start(args, fmt);
    _log_print(LOG_DEBUG, "DEBUG", fmt, args);
    va_end(args);
}

void log_info(const char *fmt, ...) {
    va_list args;
    va_start(args, fmt);
    _log_print(LOG_INFO, "INFO", fmt, args);
    va_end(args);
}

void log_warn(const char *fmt, ...) {
    va_list args;
    va_start(args, fmt);
    _log_print(LOG_WARN, "WARN", fmt, args);
    va_end(args);
}

void log_error(const char *fmt, ...) {
    va_list args;
    va_start(args, fmt);
    _log_print(LOG_ERROR, "ERROR", fmt, args);
    va_end(args);
}

//void log_debug(const char *fmt, ...){
//	if(current_level <= LOG_DEBUG) {
//			va_list args;
//			va_start(args, fmt);
//			u1_printf("[DEBUG]");
//			u1_vprintf(fmt, args); // 添加一个支持可变参数的打印函数
//			u1_printf("\r\n");
//			va_end(args);
//	}
//}	

//void log_info(const char *fmt, ...){
//	if(current_level <= LOG_INFO) {
//			va_list args;
//			va_start(args, fmt);
//			u1_printf("[INFO]");
//			u1_vprintf(fmt, args); // 添加一个支持可变参数的打印函数
//			u1_printf("\r\n");
//			va_end(args);
//	}
//}

//void log_warn(const char *fmt, ...) {
//    if(current_level <= LOG_WARN) {
//        va_list args;
//        va_start(args, fmt);
//        u1_printf("[WARN]");
//        u1_vprintf(fmt, args); // 添加一个支持可变参数的打印函数
//        u1_printf("\r\n");
//        va_end(args);
//    }
//}

//void log_error(const char *fmt, ...) {
//    if(current_level <= LOG_ERROR) {
//        va_list args;
//        va_start(args, fmt);
//        u1_printf("[ERROR]");
//        u1_vprintf(fmt, args);
//        u1_printf("\r\n");
//        va_end(args);
//    }
//}
