#include "Log.h" #include "ILog.h" #include "LogImpl.h" #include "ILogMakePtr.h" #include #include #include #include #include int InitLog(const int logInstanceType, const LogSetting *setting) { switch (logInstanceType) { case LOG_SERIAL_PRINT: { std::shared_ptr logImpl = ILogMakePtr::GetInstance()->MakeLogImplPtr(); ILog::GetInstance(&logImpl); break; } case LOG_EASYLOGGING: { std::shared_ptr logImpl = ILogMakePtr::GetInstance()->MakeLogEasylogging(setting); ILog::GetInstance(&logImpl); break; } case LOG_CAPTURE_LOG: { std::shared_ptr logImpl = ILogMakePtr::GetInstance()->MakeLongCapture(setting); ILog::GetInstance(&logImpl); break; } default: { LogError("Log module init error.\n"); return -1; } } return 0; } int UnInitLog() { std::shared_ptr logImpl = std::make_shared(); ILog::GetInstance(&logImpl); return 0; } // static void LogTypeToString(const int type) // { // switch (type) // { // case LOG_TYPE_ERROR: // { // ILog::GetInstance()->Log("[ ERROR ]"); // break; // } // case LOG_TYPE_TEST_TIPS: // { // ILog::GetInstance()->Log("[ FAILURE ]"); // break; // } // default: // break; // } // } int Log(const char *function, int line, int type, const char *format, ...) { if (!ILog::GetInstance()->IsWorking()) { return -1; } // TODO: // LogTypeToString(type); constexpr int SEND_TRACE_BUFF_SIZE = 2048; char buff[SEND_TRACE_BUFF_SIZE] = {0}; snprintf(buff, SEND_TRACE_BUFF_SIZE, "[%s][line:%d]:", function, line); // ILog::GetInstance()->Log(buff); const int headLen = strlen(buff); va_list vargs; va_start(vargs, format); int len = vsnprintf(buff + headLen, SEND_TRACE_BUFF_SIZE - headLen, format, vargs); va_end(vargs); switch (type) { case LOG_TYPE_INFORMATION: ILog::GetInstance()->InFo(buff); break; case LOG_TYPE_WARNING: ILog::GetInstance()->Warning(buff); break; case LOG_TYPE_ERROR: ILog::GetInstance()->Error(buff); break; case LOG_TYPE_DEBUG: ILog::GetInstance()->Debug(buff); break; case LOG_TYPE_TRACE: ILog::GetInstance()->Trace(buff); break; default: break; } return len; }