Minor update - Log system rework
+ GetLogLevelInfo return a struct of info relative to a type of log + filtered log in the UI
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <filesystem>
|
||||
#include <deque>
|
||||
#include <unordered_set>
|
||||
#include <imgui.h>
|
||||
|
||||
class Logger
|
||||
{
|
||||
@@ -52,29 +53,36 @@ public:
|
||||
LogLevel level;
|
||||
};
|
||||
|
||||
static const char* LogLevelToString(LogLevel level)
|
||||
struct LogLevelInfo
|
||||
{
|
||||
switch (level)
|
||||
{
|
||||
case LogLevel::Info: return "INFO";
|
||||
case LogLevel::Warning: return "WARNING";
|
||||
case LogLevel::Error: return "ERROR";
|
||||
case LogLevel::Shutdown: return "SHUTDOWN";
|
||||
case LogLevel::Initialize: return "INITIALIZE";
|
||||
case LogLevel::Update: return "UPDATE";
|
||||
case LogLevel::Render: return "RENDER";
|
||||
case LogLevel::Input: return "INPUT";
|
||||
case LogLevel::Physics: return "PHYSICS";
|
||||
case LogLevel::Audio: return "AUDIO";
|
||||
case LogLevel::Network: return "NETWORK";
|
||||
case LogLevel::Scripting: return "SCRIPTING";
|
||||
case LogLevel::AI: return "AI";
|
||||
case LogLevel::Resource: return "RESOURCE";
|
||||
case LogLevel::Memory: return "MEMORY";
|
||||
case LogLevel::Debug: return "DEBUG";
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
const char* name;
|
||||
int value;
|
||||
ImVec4 color;
|
||||
};
|
||||
|
||||
static const LogLevelInfo GetLogLevelInfo(LogLevel level)
|
||||
{
|
||||
switch (level)
|
||||
{
|
||||
case LogLevel::Info: return LogLevelInfo{ "Info", 0, ImVec4(0.0f, 1.0f, 0.0f, 1.0f) };
|
||||
case LogLevel::Warning: return LogLevelInfo{ "Warning", 1, ImVec4(1.0f, 1.0f, 0.0f, 1.0f) };
|
||||
case LogLevel::Error: return LogLevelInfo{ "Error", 2, ImVec4(1.0f, 0.0f, 0.0f, 1.0f) };
|
||||
case LogLevel::Shutdown: return LogLevelInfo{ "Shutdown", 3, ImVec4(0.0f, 0.0f, 1.0f, 1.0f) };
|
||||
case LogLevel::Initialize: return LogLevelInfo{ "Initialize", 4, ImVec4(0.0f, 1.0f, 1.0f, 1.0f) };
|
||||
case LogLevel::Update: return LogLevelInfo{ "Update", 5, ImVec4(1.0f, 0.0f, 1.0f, 1.0f) };
|
||||
case LogLevel::Render: return LogLevelInfo{ "Render", 6, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) };
|
||||
case LogLevel::Input: return LogLevelInfo{ "Input", 7, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Physics: return LogLevelInfo{ "Physics", 8, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Audio: return LogLevelInfo{ "Audio", 9, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Network: return LogLevelInfo{ "Network", 10, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Scripting: return LogLevelInfo{ "Scripting", 11, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::AI: return LogLevelInfo{ "AI", 12, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Resource: return LogLevelInfo{ "Resource", 13, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Memory: return LogLevelInfo{ "Memory", 14, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
case LogLevel::Debug: return LogLevelInfo{ "Debug", 15, ImVec4(0.5f, 0.5f, 0.5f, 1.0f) };
|
||||
default: return LogLevelInfo{ "Unknown", 16, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) };
|
||||
}
|
||||
}
|
||||
|
||||
Logger()
|
||||
{
|
||||
@@ -96,14 +104,28 @@ public:
|
||||
ManageLogFiles(directoryPath);
|
||||
|
||||
m_logFilePath = directoryPath + "\\" + m_logFileName;
|
||||
|
||||
// enable the 4 first log levels
|
||||
for (int i = 0; i < LogLevelCount; i++)
|
||||
{
|
||||
m_disabledLogLevels[i] = false;
|
||||
|
||||
if (i > 3)
|
||||
{
|
||||
m_disabledLogLevels[i] = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Log(const std::string& message, const std::string& fileName, int lineNumber, LogLevel level = LogLevel::Info)
|
||||
{
|
||||
if (m_disabledLogLevels.find(level) != m_disabledLogLevels.end())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Si le niveau de log est d<>sactiv<69>, ne faites rien
|
||||
if (m_disabledLogLevels[GetLogLevelInfo(level).value])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
auto now = std::chrono::system_clock::now();
|
||||
auto in_time_t = std::chrono::system_clock::to_time_t(now);
|
||||
@@ -115,7 +137,7 @@ public:
|
||||
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) % 1000;
|
||||
|
||||
// Utilisez LogLevelToString pour obtenir la cha<68>ne de caract<63>res du niveau de log
|
||||
std::string levelStr = LogLevelToString(level);
|
||||
std::string levelStr = GetLogLevelInfo(level).name;
|
||||
|
||||
std::stringstream ss;
|
||||
ss << "[" << std::put_time(&buf, "%Y-%m-%d") << "] "
|
||||
@@ -136,10 +158,12 @@ public:
|
||||
|
||||
void Log(const std::string& message, LogLevel level)
|
||||
{
|
||||
if (m_disabledLogLevels.find(level) != m_disabledLogLevels.end())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Si le niveau de log est d<>sactiv<69>, ne faites rien
|
||||
if (m_disabledLogLevels[GetLogLevelInfo(level).value])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (logBuffer.size() >= logBufferSize)
|
||||
{
|
||||
@@ -191,7 +215,7 @@ public:
|
||||
m_logFileName = ss.str();
|
||||
}
|
||||
|
||||
std::unordered_set<LogLevel> m_disabledLogLevels;
|
||||
bool m_disabledLogLevels[LogLevelCount];
|
||||
|
||||
private:
|
||||
std::string m_filename;
|
||||
|
||||
Reference in New Issue
Block a user