mirror of
https://gitee.com/apaki/unicstl.git
synced 2026-05-28 22:54:19 +08:00
93 lines
2.3 KiB
C
93 lines
2.3 KiB
C
/**
|
|
* @file logger.h
|
|
* @author wenjf (orig5826@163.com)
|
|
* @brief
|
|
* @version 0.1
|
|
* @date 2026-03-31
|
|
*
|
|
* @copyright Copyright (c) 2026
|
|
*
|
|
*/
|
|
#ifndef _LOGGER_H_
|
|
#define _LOGGER_H_
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
|
|
#include "unicstl_config.h"
|
|
|
|
// -------------------- DEBUG CONFIG --------------------
|
|
#ifdef LOGGER_ON
|
|
|
|
#ifndef LOG_LEVEL
|
|
#define LOG_LEVEL LOG_NONE
|
|
#endif
|
|
|
|
#ifndef LOG_DEBUG_DETAIL
|
|
#define LOG_DEBUG_DETAIL 0
|
|
#endif
|
|
|
|
// -------------------- LOG OUTPUT --------------------
|
|
typedef enum {
|
|
LOG_DEBUG = 0,
|
|
LOG_INFO = 1,
|
|
LOG_WARN = 2,
|
|
LOG_ERROR = 3,
|
|
}loglevel_t;
|
|
|
|
#if LOG_DEBUG_DETAIL == 1
|
|
#define LOG_PRINT(level, fmt, ...) do {\
|
|
if ((int)level >= (int)LOG_LEVEL) {\
|
|
printf("[%s] %s:%d %s()", #level, __FILE__, __LINE__, __func__); \
|
|
printf("\n" fmt "\n", ##__VA_ARGS__);\
|
|
}\
|
|
} while (0)
|
|
#else
|
|
#define LOG_PRINT(level, fmt, ...) do {\
|
|
if (level >= (int)LOG_LEVEL) {\
|
|
printf(fmt "\n", ##__VA_ARGS__);\
|
|
}\
|
|
} while (0)
|
|
#endif
|
|
|
|
#define LOG_DEBUG(fmt, ...) LOG_PRINT(LOG_DEBUG, fmt, ##__VA_ARGS__)
|
|
#define LOG_INFO(fmt, ...) LOG_PRINT(LOG_INFO, fmt, ##__VA_ARGS__)
|
|
#define LOG_WARN(fmt, ...) LOG_PRINT(LOG_WARN, fmt, ##__VA_ARGS__)
|
|
#define LOG_ERROR(fmt, ...) LOG_PRINT(LOG_ERROR, fmt, ##__VA_ARGS__)
|
|
|
|
|
|
|
|
#define LOG_HEX(level, data, len) do {\
|
|
if (level >= LOG_LEVEL) {\
|
|
for(uint32_t i_temp = 0; i_temp < len; i_temp++) { \
|
|
if(i_temp != 0 && (i_temp % 4 == 0)){ printf(" ");}\
|
|
if(i_temp != 0 && (i_temp % 64 == 0)){ printf("\n");}\
|
|
printf("%x", ((uint8_t*)(data))[i_temp]);\
|
|
}\
|
|
printf("\n");\
|
|
}\
|
|
} while (0)
|
|
|
|
#define LOG_HEX_DEBUG(data, len) LOG_HEX(LOG_DEBUG, data, len)
|
|
#define LOG_HEX_INFO(data, len) LOG_HEX(LOG_INFO, data, len)
|
|
#define LOG_HEX_WARN(data, len) LOG_HEX(LOG_WARN, data, len)
|
|
#define LOG_HEX_ERROR(data, len) LOG_HEX(LOG_ERROR, data, len)
|
|
|
|
|
|
#else
|
|
|
|
#define LOG_DEBUG(fmt, ...) do {} while (0)
|
|
#define LOG_INFO(fmt, ...) do {} while (0)
|
|
#define LOG_WARN(fmt, ...) do {} while (0)
|
|
#define LOG_ERROR(fmt, ...) do {} while (0)
|
|
|
|
#define LOG_HEX_DEBUG(data, len) do {} while (0)
|
|
#define LOG_HEX_INFO(data, len) do {} while (0)
|
|
#define LOG_HEX_WARN(data, len) do {} while (0)
|
|
#define LOG_HEX_ERROR(data, len) do {} while (0)
|
|
|
|
#endif // LOGGER_ON
|
|
|
|
#endif /* _LOGGER_H_ */
|