88 lines
2.4 KiB
C++
88 lines
2.4 KiB
C++
#include "Logger.hpp"
|
|
|
|
#include <iomanip>
|
|
#include <iostream>
|
|
|
|
|
|
enum LOG_TYPE{
|
|
LOG_TYPE_INFO = 0,
|
|
LOG_TYPE_WARN,
|
|
LOG_TYPE_CRIT,
|
|
LOG_TYPE_DBG
|
|
};
|
|
|
|
Logger* Logger::smInstance = nullptr;
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------------------------------------------------------------------- */
|
|
|
|
inline static std::string GetLabelType(const LOG_TYPE logType) {
|
|
switch (logType) {
|
|
case LOG_TYPE_DBG:
|
|
return "][DEBUG] ";
|
|
break;
|
|
case LOG_TYPE_CRIT:
|
|
return "][CRIT] ";
|
|
break;
|
|
case LOG_TYPE_WARN:
|
|
return "][WARN] ";
|
|
break;
|
|
case LOG_TYPE_INFO:
|
|
default:
|
|
return "][INFO] ";
|
|
break;
|
|
}
|
|
}
|
|
|
|
static void LogConsolePrint(const LOG_TYPE logType, const std::string& message, const double time) {
|
|
std::cout << std::fixed << std::setprecision(6) << '[' << time;
|
|
std::cout << GetLabelType(logType);
|
|
std::cout << message << std::endl;
|
|
}
|
|
|
|
static void LogFilePrint(const LOG_TYPE logType, const std::string& message, const double time) {
|
|
std::ofstream outLogFile;
|
|
outLogFile.open("log.txt", std::ios::app);
|
|
|
|
if (outLogFile.is_open()) {
|
|
outLogFile << std::fixed << std::setprecision(6) << '[' << time;
|
|
outLogFile << GetLabelType(logType);
|
|
outLogFile << message << std::endl;
|
|
|
|
outLogFile.close();
|
|
}
|
|
}
|
|
|
|
|
|
/* ------------------------------------------------------------------------------------------------------------------------------------------------- */
|
|
|
|
Logger::Logger() {
|
|
mLogTimer = std::make_unique<SysTimer>();
|
|
LogConsolePrint(LOG_TYPE_INFO, "Log module ready", mLogTimer->GetElapsedTimeS());
|
|
}
|
|
|
|
void Logger::PrintInfo(std::string _in, bool writeToFile) {
|
|
LogConsolePrint(LOG_TYPE_INFO, _in, mLogTimer->GetElapsedTimeS());
|
|
if (writeToFile)
|
|
LogFilePrint(LOG_TYPE_INFO, _in, mLogTimer->GetElapsedTimeS());
|
|
}
|
|
|
|
void Logger::PrintWarning(std::string _in, bool writeToFile) {
|
|
LogConsolePrint(LOG_TYPE_WARN, _in, mLogTimer->GetElapsedTimeS());
|
|
if (writeToFile)
|
|
LogFilePrint(LOG_TYPE_WARN, _in, mLogTimer->GetElapsedTimeS());
|
|
}
|
|
|
|
void Logger::PrintCritical(std::string _in, bool writeToFile) {
|
|
LogConsolePrint(LOG_TYPE_CRIT, _in, mLogTimer->GetElapsedTimeS());
|
|
if (writeToFile)
|
|
LogFilePrint(LOG_TYPE_CRIT, _in, mLogTimer->GetElapsedTimeS());
|
|
}
|
|
|
|
void Logger::PrintDebug(std::string _in, bool writeToFile) {
|
|
#ifdef _DEBUG
|
|
LogConsolePrint(LOG_TYPE_DBG, _in, mLogTimer->GetElapsedTimeS());
|
|
if (writeToFile)
|
|
LogFilePrint(LOG_TYPE_DBG, _in, mLogTimer->GetElapsedTimeS());
|
|
#endif
|
|
} |