From 531cfbd006634f27c1adc584bfb12a97e2af394c Mon Sep 17 00:00:00 2001 From: Jordon Brooks Date: Wed, 1 Mar 2023 00:11:37 +0000 Subject: [PATCH] Added logging to the engine --- .gitmodules | 3 +++ FluxEngine/src/Flux.h | 1 + FluxEngine/src/Flux/EntryPoint.h | 9 +++++++- FluxEngine/src/Flux/Log.cpp | 19 +++++++++++++++++ FluxEngine/src/Flux/Log.h | 36 ++++++++++++++++++++++++++++++++ premake5.lua | 5 +++-- 6 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 .gitmodules create mode 100644 FluxEngine/src/Flux/Log.cpp create mode 100644 FluxEngine/src/Flux/Log.h diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c933331 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "FluxEngine/vendor/spdlog"] + path = FluxEngine/vendor/spdlog + url = https://github.com/gabime/spdlog diff --git a/FluxEngine/src/Flux.h b/FluxEngine/src/Flux.h index c24b206..63b57d5 100644 --- a/FluxEngine/src/Flux.h +++ b/FluxEngine/src/Flux.h @@ -1,5 +1,6 @@ #pragma once #include "Flux/Application.h" +#include "Flux/Log.h" #include "Flux/EntryPoint.h" \ No newline at end of file diff --git a/FluxEngine/src/Flux/EntryPoint.h b/FluxEngine/src/Flux/EntryPoint.h index ebdadb8..425bed1 100644 --- a/FluxEngine/src/Flux/EntryPoint.h +++ b/FluxEngine/src/Flux/EntryPoint.h @@ -1,5 +1,6 @@ #pragma once -#include "../Flux.h" + +#include "Log.h" #ifdef FLUX_PLATFORM_WINDOWS @@ -7,6 +8,12 @@ extern Flux::Application* Flux::CreateApplication(); int main(int argc, char** argv) { + Flux::Log::Init(); + + FLUX_CORE_WARN("Logging Initialized!"); + int a = 5; + FLUX_INFO("Hello! {0}", a); + auto app = Flux::CreateApplication(); app->Run(); delete app; diff --git a/FluxEngine/src/Flux/Log.cpp b/FluxEngine/src/Flux/Log.cpp new file mode 100644 index 0000000..33c9c28 --- /dev/null +++ b/FluxEngine/src/Flux/Log.cpp @@ -0,0 +1,19 @@ +#include "Log.h" + +#include "spdlog/sinks/stdout_color_sinks.h" + +namespace Flux +{ + std::shared_ptr Log::s_CoreLogger; + std::shared_ptr Log::s_ClientLogger; + + void Log::Init() + { + spdlog::set_pattern("%^[%T] %n: %v%$"); + s_CoreLogger = spdlog::stdout_color_mt("FLUX"); + s_CoreLogger->set_level(spdlog::level::trace); + + s_ClientLogger = spdlog::stdout_color_mt("APP"); + s_ClientLogger->set_level(spdlog::level::trace); + } +} diff --git a/FluxEngine/src/Flux/Log.h b/FluxEngine/src/Flux/Log.h new file mode 100644 index 0000000..70e24b6 --- /dev/null +++ b/FluxEngine/src/Flux/Log.h @@ -0,0 +1,36 @@ +#pragma once + +#include + + +#include "Core.h" +#include "spdlog/spdlog.h" + +namespace Flux +{ + class FLUX_API Log + { + public: + static void Init(); + inline static std::shared_ptr& GetCoreLogger() { return s_CoreLogger; } + inline static std::shared_ptr& GetClientLogger() { return s_ClientLogger; } + private: + static std::shared_ptr s_CoreLogger; + static std::shared_ptr s_ClientLogger; + }; + +} + +// Core log macros +#define FLUX_CORE_TRACE(...) ::Flux::Log::GetCoreLogger()->trace(__VA_ARGS__) +#define FLUX_CORE_INFO(...) ::Flux::Log::GetCoreLogger()->info(__VA_ARGS__) +#define FLUX_CORE_WARN(...) ::Flux::Log::GetCoreLogger()->warn(__VA_ARGS__) +#define FLUX_CORE_ERROR(...) ::Flux::Log::GetCoreLogger()->error(__VA_ARGS__) +#define FLUX_CORE_FATAL(...) ::Flux::Log::GetCoreLogger()->fatal(__VA_ARGS__) + +// Client log macros +#define FLUX_TRACE(...) ::Flux::Log::GetCoreLogger()->trace(__VA_ARGS__) +#define FLUX_INFO(...) ::Flux::Log::GetCoreLogger()->info(__VA_ARGS__) +#define FLUX_WARN(...) ::Flux::Log::GetCoreLogger()->warn(__VA_ARGS__) +#define FLUX_ERROR(...) ::Flux::Log::GetCoreLogger()->error(__VA_ARGS__) +#define FLUX_FATAL(...) ::Flux::Log::GetCoreLogger()->fatal(__VA_ARGS__) diff --git a/premake5.lua b/premake5.lua index c245318..079eeda 100644 --- a/premake5.lua +++ b/premake5.lua @@ -22,7 +22,7 @@ project "FluxEngine" includedirs { - + "%{prj.name}/vendor/spdlog/include", } filter "system:windows" @@ -67,7 +67,8 @@ project "Sandbox" includedirs { - "Flux/src" + "FluxEngine/vendor/spdlog/include", + "FluxEngine/src" } links