log tweak

This commit is contained in:
CatChow0 2025-01-19 21:49:40 +01:00
parent 161166837f
commit fec593205b
3 changed files with 27 additions and 19 deletions

View File

@ -67,7 +67,7 @@ public:
case LogLevel::Info: return LogLevelInfo{ "Info", 0, ImVec4(0.0f, 1.0f, 0.0f, 1.0f) }; 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::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::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::Shutdown: return LogLevelInfo{ "Shutdown", 3, ImVec4(0.5f, 0.0f, 0.0f, 1.0f) };
case LogLevel::Initialize: return LogLevelInfo{ "Initialize", 4, ImVec4(0.0f, 1.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::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::Render: return LogLevelInfo{ "Render", 6, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) };
@ -105,27 +105,23 @@ public:
m_logFilePath = directoryPath + "\\" + m_logFileName; m_logFilePath = directoryPath + "\\" + m_logFileName;
// enable the 4 first log levels // Enable only the Error warning and shutdown log levels
for (int i = 0; i < LogLevelCount; i++) for (int i = 0; i < LogLevelCount; i++)
{ {
m_disabledLogLevels[i] = false; m_disabledLogLevels[i] = true;
if (i > 3) if (i == static_cast<int>(LogLevel::Error) || i == static_cast<int>(LogLevel::Warning) || i == static_cast<int>(LogLevel::Shutdown))
{ {
m_disabledLogLevels[i] = true; m_disabledLogLevels[i] = false;
} }
} }
} }
// ecrit un message dans le fichier de log et le stocke dans le buffer
void Log(const std::string& message, const std::string& fileName, int lineNumber, LogLevel level = LogLevel::Info) void Log(const std::string& message, const std::string& fileName, int lineNumber, LogLevel level = LogLevel::Info)
{ {
// Si le niveau de log est désactivé, ne faites rien
if (m_disabledLogLevels[GetLogLevelInfo(level).value])
{
return;
}
auto now = std::chrono::system_clock::now(); auto now = std::chrono::system_clock::now();
auto in_time_t = std::chrono::system_clock::to_time_t(now); auto in_time_t = std::chrono::system_clock::to_time_t(now);
@ -156,6 +152,7 @@ public:
} }
} }
// ecrit un message dans la console
void Log(const std::string& message, LogLevel level) void Log(const std::string& message, LogLevel level)
{ {
@ -216,14 +213,14 @@ public:
} }
bool m_disabledLogLevels[LogLevelCount]; bool m_disabledLogLevels[LogLevelCount];
std::string m_logFilePath;
private: private:
std::string m_filename; std::string m_filename;
std::string m_appdataPath; std::string m_appdataPath;
std::string m_logFileName; std::string m_logFileName;
std::string m_logFilePath;
std::deque<LogEntry> logBuffer; std::deque<LogEntry> logBuffer;
const size_t logBufferSize = 1000; const size_t logBufferSize = 100;
}; };

View File

@ -17,7 +17,7 @@ DockId=0x0000000A,0
[Window][Terrain] [Window][Terrain]
Pos=8,27 Pos=8,27
Size=290,489 Size=290,566
Collapsed=0 Collapsed=0
DockId=0x00000009,0 DockId=0x00000009,0

View File

@ -526,7 +526,15 @@ void imguiManager::WidgetLogWindow(ApplicationClass* app)
// Filtre de recherche // Filtre de recherche
static ImGuiTextFilter filter; static ImGuiTextFilter filter;
filter.Draw("Filter (inc,-exc)", 180); filter.Draw("Filter ", 180);
ImGui::SameLine();
// Bouton pour ouvrir le fichier de log
if (ImGui::Button("Open Log File"))
{
ShellExecuteA(NULL, "open", Logger::Get().m_logFilePath.c_str(), NULL, NULL, SW_SHOWNORMAL);
}
// Place the menu on the same line as the filter // Place the menu on the same line as the filter
ImGui::SameLine(); ImGui::SameLine();
@ -548,22 +556,19 @@ void imguiManager::WidgetLogWindow(ApplicationClass* app)
const auto& logBuffer = Logger::Get().GetLogBuffer(); const auto& logBuffer = Logger::Get().GetLogBuffer();
std::vector<Logger::LogEntry> logfiltered; std::vector<Logger::LogEntry> logfiltered;
int logCount = logBuffer.size(); int logCount = logBuffer.size();
int filteredLogCount = 0;
// Affichage des logs filtrés // Affichage des logs filtrés
ImGui::BeginChild("Log"); ImGui::BeginChild("Log");
// Compter le nombre de logs qui passent le filtre et les ajouter a la liste des message a afficher
for (const auto& log : logBuffer) for (const auto& log : logBuffer)
{ {
if (filter.PassFilter(log.message.c_str()) && !Logger::Get().m_disabledLogLevels[static_cast<size_t>(log.level)]) if (filter.PassFilter(log.message.c_str()) && !Logger::Get().m_disabledLogLevels[static_cast<size_t>(log.level)])
{ {
logfiltered.push_back(log); logfiltered.push_back(log);
filteredLogCount++;
} }
} }
if (filteredLogCount == 0) if (logfiltered.size() == 0)
{ {
ImGui::Text("No logs to display."); ImGui::Text("No logs to display.");
} }
@ -585,6 +590,12 @@ void imguiManager::WidgetLogWindow(ApplicationClass* app)
clipper.End(); clipper.End();
} }
// Scroll to the bottom
if (ImGui::GetScrollY() >= ImGui::GetScrollMaxY())
{
ImGui::SetScrollHereY(1.0f);
}
ImGui::EndChild(); ImGui::EndChild();
ImGui::End(); ImGui::End();