项目变大时,可能会出现一些意料之外的错误,这些错误的输出信息需要更加明确,可以让开发人员迅速知道哪里的问题。在日志类中添加错误输出信息。
windows下根据错误码输出错误信息的函数相较于linux下较为复杂。
CELLLog.hpp
static void PError(const char* pStr)
{
PError("%s", pStr);
}
template<typename ...Args>
static void PError(const char* pformat, Args ... args)
{
#ifdef _WIN32
auto errCode = GetLastError();
Instance()._taskServer.addTask([=]() {
char text[256] = {};
FormatMessageA(
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
errCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&text, 256, NULL
);
EchoReal(true, "PError ", pformat, args...);
EchoReal(false,"PError ", "errno=%d,errmsg=%s", errCode, text);
});
#else
auto errCode = errno;
Instance()._taskServer.addTask([=]() {
EchoReal(true, "PError ", pformat, args...);
EchoReal(true, "PError ", "errno<%d>,errmsg<%s>", errCode, strerror(errCode));
});
#endif
}
static void Error(const char* pStr)
{
Error("%s", pStr);
}
template<typename ...Args>
static void Error(const char* pformat, Args ... args)
{
Echo("Error ", pformat, args...);
}