Files
TencentOS-tiny/components/connectivity/mqttclient/common/log/salof.h
2020-06-18 19:49:31 +08:00

114 lines
3.2 KiB
C

#ifndef _SALOF_H_
#define _SALOF_H_
#include "salof_defconfig.h"
#include "format.h"
#include "fifo.h"
#include <stdio.h>
int salof_init(void);
void salof(const char *fmt, ...);
/** font color */
#define SALOF_FC_BLACK 30
#define SALOF_FC_RED 31
#define SALOF_FC_GREEN 32
#define SALOF_FC_YELLOW 33
#define SALOF_FC_BLUE 34
#define SALOF_FC_PURPLE 35
#define SALOF_FC_DARK 36
#define SALOF_FC_WHITE 37
#ifdef SALOF_USING_LOG
#if SALOF_USING_SALOF
#define SALOF_PRINT_LOG salof
#else
#if ((!SALOF_USING_SALOF)&&(!SALOF_PRINT_LOG))
#define SALOF_PRINT_LOG printf
#endif
#ifndef SALOF_PRINT_LOG
#error "If the SALOF_USING_LOG macro definition is turned on, you must define SALOF_PRINT_LOG as the LOG output, such as #definePRINT_LOG printf"
#endif
#endif
#if SALOF_LOG_COLOR
#define SALOF_LOG_START(l, c) SALOF_PRINT_LOG("\033\n["#c"m["#l"] >> ")
#define SALOF_LOG_END SALOF_PRINT_LOG("\033[0m")
#else
#define SALOF_LOG_START(l, c) SALOF_PRINT_LOG("\n["#l"] >> ")
#define SALOF_LOG_END
#endif
#if SALOF_LOG_TS && SALOF_LOG_TAR
#define SALOF_LOG_T SALOF_PRINT_LOG("[TS: %d] [TAR: %s] ",salof_get_tick(), salof_get_task_name())
#elif SALOF_LOG_TS
#define SALOF_LOG_T SALOF_PRINT_LOG("[TS: %d] ", salof_get_tick())
#elif SALOF_LOG_TAR
#define SALOF_LOG_T SALOF_PRINT_LOG("[TAR: %s] ", salof_get_task_name())
#else
#define SALOF_LOG_T
#endif
#define SALOF_LOG_LINE(l, c, fmt, ...) \
do { \
SALOF_LOG_START(l, c); \
SALOF_LOG_T; \
SALOF_PRINT_LOG(fmt, ##__VA_ARGS__); \
SALOF_LOG_END; \
} while (0)
#define SALOF_BASE_LEVEL (0)
#define SALOF_ERR_LEVEL (SALOF_BASE_LEVEL + 1)
#define SALOF_WARN_LEVEL (SALOF_ERR_LEVEL + 1)
#define SALOF_INFO_LEVEL (SALOF_WARN_LEVEL + 1)
#define SALOF_DEBUG_LEVEL (SALOF_INFO_LEVEL + 1)
#ifndef SALOF_LOG_LEVEL
#define SALOF_LOG_LEVEL SALOF_DEBUG_LEVEL
#endif
#if SALOF_LOG_LEVEL < SALOF_DEBUG_LEVEL
#define SALOF_LOG_DEBUG(fmt, ...)
#else
#define SALOF_LOG_DEBUG(fmt, ...) SALOF_LOG_LINE(D, 0, fmt, ##__VA_ARGS__)
#endif
#if SALOF_LOG_LEVEL < SALOF_INFO_LEVEL
#define SALOF_LOG_INFO(fmt, ...)
#else
#define SALOF_LOG_INFO(fmt, ...) SALOF_LOG_LINE(I, SALOF_FC_GREEN, fmt, ##__VA_ARGS__)
#endif
#if SALOF_LOG_LEVEL < SALOF_WARN_LEVEL
#define SALOF_LOG_WARN(fmt, ...)
#else
#define SALOF_LOG_WARN(fmt, ...) SALOF_LOG_LINE(W, SALOF_FC_YELLOW, fmt, ##__VA_ARGS__)
#endif
#if SALOF_LOG_LEVEL < SALOF_ERR_LEVEL
#define SALOF_LOG_ERR(fmt, ...)
#else
#define SALOF_LOG_ERR(fmt, ...) SALOF_LOG_LINE(E, SALOF_FC_RED, fmt, ##__VA_ARGS__)
#endif
#if SALOF_LOG_LEVEL < SALOF_BASE_LEVEL
#define SALOF_LOG(fmt, ...)
#else
#define SALOF_LOG(fmt, ...) SALOF_PRINT_LOG(fmt, ##__VA_ARGS__)
#endif
#else
#define SALOF_LOG_DEBUG(fmt, ...)
#define SALOF_LOG_INFO(fmt, ...)
#define SALOF_LOG_WARN(fmt, ...)
#define SALOF_LOG_ERR(fmt, ...)
#define SALOF_LOG_LOG(fmt, ...)
#endif
#endif // !_SALOF_H_