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 */