Minor patch - Log system + Exécutable fonctionnel
Feat : + Log systeme
This commit is contained in:
82
enginecustom/Logger.h
Normal file
82
enginecustom/Logger.h
Normal file
@@ -0,0 +1,82 @@
|
||||
#pragma once
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <Windows.h>
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
class Logger
|
||||
{
|
||||
public:
|
||||
|
||||
enum class LogLevel
|
||||
{
|
||||
Info,
|
||||
Warning,
|
||||
Error
|
||||
};
|
||||
|
||||
Logger()
|
||||
{
|
||||
char* appdata = nullptr;
|
||||
size_t len;
|
||||
_dupenv_s(&appdata, &len, "APPDATA");
|
||||
if (appdata == 0 ||appdata == nullptr)
|
||||
{
|
||||
m_appdataPath = "log.log";
|
||||
}
|
||||
else
|
||||
{
|
||||
m_appdataPath = appdata;
|
||||
}
|
||||
free(appdata);
|
||||
std::string directoryPath = m_appdataPath + "\\Khaotic Engine";
|
||||
CreateDirectoryA(directoryPath.c_str(), NULL);
|
||||
|
||||
m_logFilePath = directoryPath + "\\" + m_logFileName;
|
||||
}
|
||||
|
||||
void Log(const std::string& message, const std::string& fileName, int lineNumber, LogLevel level = LogLevel::Info)
|
||||
{
|
||||
auto now = std::chrono::system_clock::now();
|
||||
auto in_time_t = std::chrono::system_clock::to_time_t(now);
|
||||
|
||||
std::tm buf;
|
||||
localtime_s(&buf, &in_time_t);
|
||||
|
||||
std::string levelStr;
|
||||
switch (level)
|
||||
{
|
||||
case LogLevel::Error:
|
||||
levelStr = "ERROR";
|
||||
break;
|
||||
case LogLevel::Warning:
|
||||
levelStr = "WARNING";
|
||||
break;
|
||||
case LogLevel::Info:
|
||||
levelStr = "INFO";
|
||||
break;
|
||||
}
|
||||
|
||||
std::stringstream ss;
|
||||
ss << "[" << std::put_time(&buf, "%Y-%m-%d") << "] "
|
||||
<< "[" << std::put_time(&buf, "%X") << "] "
|
||||
<< "[" << levelStr << "] "
|
||||
<< "[" << fileName << ":" << lineNumber << "] "
|
||||
<< message;
|
||||
|
||||
std::ofstream file(m_logFilePath, std::ios::app);
|
||||
if (file.is_open())
|
||||
{
|
||||
file << ss.str() << std::endl;
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_filename;
|
||||
std::string m_appdataPath;
|
||||
std::string m_logFileName = "enginecustom.log";
|
||||
std::string m_logFilePath;
|
||||
};
|
||||
Reference in New Issue
Block a user