hunting/utils/LogC/include/iLog.h
2023-08-13 01:28:54 +08:00

55 lines
1.2 KiB
C

#ifndef _IPC_I_LOG_H_
#define _IPC_I_LOG_H_
#include <stdarg.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
#define LogInfo(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_INFO, __VA_ARGS__)
#define LogDebug(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_DEBUG, __VA_ARGS__)
#define LogErr(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_ERROR, __VA_ARGS__)
#define LogWarr(...) getInstance()->log_fmt(getInstance(), LOG_TYPE_WARR, __VA_ARGS__)
typedef enum LogLeveL {
LOG_TYPE_INFO = 0,
LOG_TYPE_DEBUG,
LOG_TYPE_ERROR,
LOG_TYPE_WARR,
}LogLeveL;
typedef enum LogMode {
LOG_MODE_TERMINAL = 0,
LOG_MODE_LOGFILE,
LOG_MODE_BOTH,
}LogMode;
typedef struct iLog ILog;
struct iLog {
void (*init)(ILog *);
void (*unInit)(ILog *);
void (*log_fmt)(ILog *, const LogLeveL level, const char *fmt, ...);
};
ILog* getInstance(void);
void setILog(ILog *impl);
ILog *new_Log_abs(void);
void del_Log_abs(ILog *impl);
static void f_init(ILog *impl)
{
getInstance()->init(getInstance());
}
static void f_unInit(ILog *impl)
{
getInstance()->unInit(getInstance());
}
#ifdef __cplusplus
}
#endif
#endif //_IPC_I_LOG_H_