From 4ab8e80c87bd4400f24724028460119e8d1a349b Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Wed, 17 Jan 2024 21:29:11 +0100 Subject: [PATCH] Implementation of logging to console and to file with macros --- bakara/src/bakara/core/core.h | 0 bakara/src/bakara/core/log.cpp | 28 ++++++++++++++++++++++++++ bakara/src/bakara/core/log.h | 36 ++++++++++++++++++++++++++++++++++ sandbox/src/main.cpp | 4 +++- 4 files changed, 67 insertions(+), 1 deletion(-) delete mode 100644 bakara/src/bakara/core/core.h diff --git a/bakara/src/bakara/core/core.h b/bakara/src/bakara/core/core.h deleted file mode 100644 index e69de29..0000000 diff --git a/bakara/src/bakara/core/log.cpp b/bakara/src/bakara/core/log.cpp index e69de29..442f209 100644 --- a/bakara/src/bakara/core/log.cpp +++ b/bakara/src/bakara/core/log.cpp @@ -0,0 +1,28 @@ +#include "log.h" + +namespace Bk { + + std::shared_ptr Log::CoreLogger; + std::shared_ptr Log::AppLogger; + + void Log::Init() + { + std::vector logSinks; + logSinks.emplace_back(std::make_shared()); + logSinks.emplace_back(std::make_shared("bakara.log", true)); + + logSinks[0]->set_pattern("%^[%T] %n: %v%$"); + logSinks[1]->set_pattern("[%T] [%l] %n: %v"); + + CoreLogger = std::make_shared("BAKARA", begin(logSinks), end(logSinks)); + spdlog::register_logger(CoreLogger); + CoreLogger->set_level(spdlog::level::trace); + CoreLogger->flush_on(spdlog::level::trace); + + AppLogger = std::make_shared("APP", begin(logSinks), end(logSinks)); + spdlog::register_logger(AppLogger); + AppLogger->set_level(spdlog::level::trace); + AppLogger->flush_on(spdlog::level::trace); + } + +} \ No newline at end of file diff --git a/bakara/src/bakara/core/log.h b/bakara/src/bakara/core/log.h index e69de29..ec4142e 100644 --- a/bakara/src/bakara/core/log.h +++ b/bakara/src/bakara/core/log.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace Bk { + + class Log + { + public: + static void Init(); + + static std::shared_ptr& GetCoreLogger() { return CoreLogger; } + static std::shared_ptr& GetAppLogger() { return AppLogger; } + private: + static std::shared_ptr CoreLogger; + static std::shared_ptr AppLogger; + }; + + #define BK_CORE_TRACE(...) ::Bk::Log::GetCoreLogger()->trace(__VA_ARGS__) + #define BK_CORE_INFO(...) ::Bk::Log::GetCoreLogger()->info(__VA_ARGS__) + #define BK_CORE_WARN(...) ::Bk::Log::GetCoreLogger()->warn(__VA_ARGS__) + #define BK_CORE_ERROR(...) ::Bk::Log::GetCoreLogger()->error(__VA_ARGS__) + #define BK_CORE_CRITICAL(...) ::Bk::Log::GetCoreLogger()->critical(__VA_ARGS__) + + // Client log macros + #define BK_TRACE(...) ::Bk::Log::GetAppLogger()->trace(__VA_ARGS__) + #define BK_INFO(...) ::Bk::Log::GetAppLogger()->info(__VA_ARGS__) + #define BK_WARN(...) ::Bk::Log::GetAppLogger()->warn(__VA_ARGS__) + #define BK_ERROR(...) ::Bk::Log::GetAppLogger()->error(__VA_ARGS__) + #define BK_CRITICAL(...) ::Bk::Log::GetAppLogger()->critical(__VA_ARGS__) + +} \ No newline at end of file diff --git a/sandbox/src/main.cpp b/sandbox/src/main.cpp index 6251bb7..7c47ca9 100644 --- a/sandbox/src/main.cpp +++ b/sandbox/src/main.cpp @@ -1,7 +1,9 @@ #include -#include +#include int main() { + Bk::Log::Init(); + BK_INFO("Bienvenue dans la sandbox {0}", "bakara"); Bk::Math::Vec2 vec(2.0f,2.0f); std::cout << vec.x << " " << vec.y <<"\n"; } \ No newline at end of file