03-log

#ifndef XLOG_H
#define XLOG_H
#include <windows.h>
#include <stdarg.h>
#include <stdio.h>

#define LOG_BUF_SIZE                            1024
#ifndef LOG_TAG
#define LOG_TAG                                 NULL
#endif

static char mLogInfo[] = { 'F', 'E', 'W', 'I', 'D' };

enum LogLevel {
    LOG_LV_FATAL,
    LOG_LV_ERROR,
    LOG_LV_WARN,
    LOG_LV_INFO,
    LOG_LV_DEBUG
};

static inline int LogPrint(int logLvl, const char *tag, const char *fmt, ...) {
    va_list ap;
    char buf[LOG_BUF_SIZE];
    SYSTEMTIME st;
    GetLocalTime(&st);

    va_start(ap, fmt);
    int ret = vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
    va_end(ap);

    if (tag != NULL && *tag != '\0') {
        printf("%02d-%02d %02d:%02d:%02d.%03u [%c] %s: %s",
            st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, mLogInfo[logLvl], tag, buf);
    } else {
        printf("%02d-%02d %02d:%02d:%02d.%03u [%c] %s",
            st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, mLogInfo[logLvl], buf);
    }
    return ret;
}

#define LOG(logLvl, fmt, args...)               LogPrint(logLvl, LOG_TAG, fmt, ##args)
#define LOGF(fmt, ...)                          LOG(LOG_LV_FATAL, "<%s %s %u> " fmt "\n", __FILE, __FUNC, __LINE, ##__VA_ARGS__)
#define LOGE(fmt, ...)                          LOG(LOG_LV_ERROR, "<%s %s %u> " fmt "\n", __FILE, __FUNC, __LINE, ##__VA_ARGS__)
#define LOGW(fmt, ...)                          LOG(LOG_LV_WARN, "<%s %s %u> " fmt "\n", __FILE, __FUNC, __LINE, ##__VA_ARGS__)
#define LOGI(fmt, ...)                          LOG(LOG_LV_INFO, "<%s %u> " fmt "\n", __FUNC, __LINE, ##__VA_ARGS__)
// #define LOGD(fmt, ...)                          LOG(LOG_LV_DEBUG, "<%s %u> " fmt "\n", __FUNC, __LINE, ##__VA_ARGS__)
#define LOGD(fmt, ...)

#endif /* X_LOG_H */

 

posted @ 2025-09-07 22:22  乐观的知觉  阅读(7)  评论(0)    收藏  举报