186 lines
7.3 KiB
C
186 lines
7.3 KiB
C
#ifndef __ERROR_H__
|
|
#define __ERROR_H__
|
|
|
|
#include "UtilityGlobal.h"
|
|
#include "spdlog/spdlog.h"
|
|
|
|
/* Log 等级 */
|
|
enum ccs_logging_level {
|
|
logging_fatal = 1, /* Fatal: 用于打印system error日志 */
|
|
logging_err = 2, /* Error: 用于打印Error日志 */
|
|
logging_warn = 3, /* Warning: 用于打印Warning日志 */
|
|
logging_debug = 4, /* Debug: 用于打印专属Debug日志 */
|
|
logging_info = 5 /* Info: 用于打印自设的Info信息日志 */
|
|
};
|
|
|
|
/* 错误类型与业务执行返回 */
|
|
#define EXECUTE_SUCCESS 0x0 /* 执行成功返回 */
|
|
#define SYSTEM_ERROR 0x1 /* 执行返回中发生系统错误 */
|
|
#define EXECUTE_FAIL 0x2 /* 执行返回中发生业务错误 */
|
|
|
|
/* 错误代码 ERROR-CODE */
|
|
#define ERR_CODE_START 0
|
|
/* 自定义ERROR-Message */
|
|
#define USR_DESIGN_FATAL 1
|
|
#define USR_DESIGN_ERROR 2
|
|
#define USR_DESIGN_WARNING 3
|
|
#define USR_DESIGN_DEBUG 4
|
|
#define USR_DESIGN_INFO 5
|
|
|
|
/* 系统错误类型 */
|
|
enum ccs_system_errcode {
|
|
SYS_ERR_START = 100,
|
|
SYS_EPERM = 101, /* 参数错误 */
|
|
SYS_ENOENT = 102, /* 文件错误 */
|
|
SYS_ERR_END,
|
|
SYS_WARN_START = 200,
|
|
SYS_WARN_END,
|
|
SYS_DEBUG_START = 300,
|
|
SYS_DEBUG_END,
|
|
SYS_INFO_START = 400,
|
|
SYS_INFO_END,
|
|
//...
|
|
SYS_ERRC_END
|
|
};
|
|
|
|
/* 业务错误类型 - 电气模块 */
|
|
enum ccsElectric_execute_errcode {
|
|
ELE_ERR_START = 1000,
|
|
ELE_NOT_INIT_ELECTRICMODEL = 1001, /* 电气模块未初始化 */
|
|
ELE_NOT_INIT_ELECTRICDIAGRAM = 1002, /* 电气的图元管理模块未初始化 */
|
|
ELE_NOT_INIT_ELECTRICDB = 1003, /* 电气的数据库操作模块未初始化 */
|
|
ELE_NOT_INIT_ELECTRICCAL = 1004, /* 电气的计算模块未初始化 */
|
|
ELE_UNKOWN_MEMBER_TYPE = 1005, /* 未识别的电气组合图元类型 */
|
|
ELE_FAIL_ADD_MEMBER_DIAGRAM = 1006, /* 电气图元map中插入新建图元失败 */
|
|
ELE_FAIL_TYPE_CHANGETO_CTOR = 1007, /* 电气由图元类型调用构造函数失败 */
|
|
ELE_KEY_EXIST_IN_JSON = 1008, /* 电气JSON对象已存在此key */
|
|
ELE_KEY_NOT_EXTST_IN_JSON = 1009, /* 电气JSON对象不存在此key */
|
|
ELE_SRE_INIT_FAIL = 1010, /* 电气计算模块初始化失败 */
|
|
ELE_KEY_NOT_EXTST_IN_MAP = 1011, /* 电气map对象不存在此key */
|
|
ELE_CREAT_SOURCE_TREE_FAIL = 1012, /* 生成一个短路点的馈电子树失败 */
|
|
ELE_ERR_END,
|
|
ELE_WARN_START = 1100,
|
|
ELE_WARN_END,
|
|
ELE_DEBUG_START = 1200,
|
|
ELE_DEBUG_END,
|
|
ELE_INFO_START = 1300,
|
|
ELE_INFO_END,
|
|
//...
|
|
ELE_ERRC_END = 1400
|
|
};
|
|
|
|
/* 业务错误类型 - 轮机模块 */
|
|
enum ccsTurbine_execute_errcode {
|
|
TUBO_ERR_START = 1500,
|
|
TUBO_NOT_INIT_ELECTRICMODEL = 1501, /* 轮机模块未初始化 */
|
|
TUBO_NOT_INIT_ELECTRICDIAGRAM = 1502, /* 轮机的图元管理模块未初始化 */
|
|
TUBO_NOT_INIT_ELECTRICDB = 1503, /* 轮机的数据库操作模块未初始化 */
|
|
TUBO_NOT_INIT_ELECTRICCAL = 1504, /* 轮机的计算模块未初始化 */
|
|
TUBO_UNKOWN_MEMBER_TYPE = 1505, /* 未识别的轮机组合图元类型 */
|
|
TUBO_FAIL_ADD_MEMBER_DIAGRAM = 1506, /* 轮机图元map中插入新建图元失败 */
|
|
TUBO_FAIL_TYPE_CHANGETO_CTOR = 1507, /* 轮机由图元类型调用构造函数失败 */
|
|
TUBO_KEY_EXIST_IN_JSON = 1508, /* 轮机JSON对象已存在此key */
|
|
TUBO_KEY_NOT_EXTST_IN_JSON = 1509, /* 轮机JSON对象不存在此key */
|
|
TUBO_SRE_INIT_FAIL = 1510, /* 轮机计算模块初始化失败 */
|
|
TUBO_ERR_END,
|
|
TUBO_WARN_START = 1600,
|
|
TUBO_WARN_END,
|
|
TUBO_DEBUG_START = 1700,
|
|
TUBO_DEBUG_END,
|
|
TUBO_INFO_START = 1800,
|
|
TUBO_INFO_END,
|
|
//...
|
|
TUBO_ERRC_END = 1900
|
|
};
|
|
|
|
/* 业务错误类型 - 数据集模块 */
|
|
enum dataset_execute_errcode{
|
|
DATASET_DATATABLE_NOT_EXIST =2500, /* 数据集中不存在该表名 */
|
|
DATASET_CONNECT_DATABASE_FAILED =25011, /* 创建数据库连接失败 */
|
|
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
extern"C"{
|
|
#endif
|
|
|
|
#define MAX_MESSAGE_LENGTH 1024
|
|
/* 初始化日志输出格式 */
|
|
void UTILITY_API init_log_format_setting();
|
|
/* 根据errcode打印日志: return 业务执行返回的错误类型 */
|
|
int UTILITY_API output_log(const char* file, int line, int errcode, ...);
|
|
|
|
#ifdef _WIN32
|
|
|
|
// #define LOG_FATAL(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_FATAL, __VA_ARGS__);
|
|
// #define LOG_ERROR(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_ERROR, __VA_ARGS__);
|
|
// #define LOG_WARNING(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_WARNING, __VA_ARGS__);
|
|
// #define LOG_DEBUG(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_DEBUG, __VA_ARGS__);
|
|
// #define LOG_INFO(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_INFO, __VA_ARGS__);
|
|
|
|
#define LOG(errcode, ...) err |= output_log(__FILE__, __LINE__, errcode, __VA_ARGS__);
|
|
//切换编译器后改为##__VA_ARGS__
|
|
#define LOG_CHECK( check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, __VA_ARGS__);\
|
|
}
|
|
|
|
|
|
#define LOG_CHECK_EXIT(check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, __VA_ARGS__);\
|
|
goto cleanup;\
|
|
}
|
|
|
|
#define LOG_CHECK_CONTINUE( check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, __VA_ARGS__);\
|
|
continue;\
|
|
}
|
|
|
|
#define LOG_CHECK_BREAK( check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, __VA_ARGS__);\
|
|
break;\
|
|
}
|
|
|
|
#else
|
|
#define LOG_FATAL(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_FATAL, ##__VA_ARGS__);
|
|
#define LOG_ERROR(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_ERROR, ##__VA_ARGS__);
|
|
#define LOG_WARNING(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_WARNING, ##__VA_ARGS__);
|
|
#define LOG_DEBUG(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_DEBUG, ##__VA_ARGS__);
|
|
#define LOG_INFO(...) err |= output_log(__FILE__, __LINE__, USR_DESIGN_INFO, ##__VA_ARGS__);
|
|
|
|
#define LOG(errcode, ...) err |= output_log(__FILE__, __LINE__, errcode, ##__VA_ARGS__);
|
|
//切换编译器后改为##__VA_ARGS__
|
|
#define LOG_CHECK( check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, ##__VA_ARGS__);\
|
|
}
|
|
|
|
|
|
#define LOG_CHECK_EXIT(check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, ##__VA_ARGS__);\
|
|
goto cleanup;\
|
|
}
|
|
|
|
#define LOG_CHECK_CONTINUE( check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, ##__VA_ARGS__);\
|
|
continue;\
|
|
}
|
|
|
|
#define LOG_CHECK_BREAK( check_point, errcode, ...) \
|
|
if (!(check_point)) {\
|
|
err |= output_log(__FILE__, __LINE__, errcode, ##__VA_ARGS__);\
|
|
break;\
|
|
}
|
|
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif |