55 lines
1.2 KiB
C
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_
|