Implementation of logging to console and to file with macros

dev
anulax1225 ago%!(EXTRA string=1 year)
parent efe4140efb
commit 4ab8e80c87
  1. 0
      bakara/src/bakara/core/core.h
  2. 28
      bakara/src/bakara/core/log.cpp
  3. 36
      bakara/src/bakara/core/log.h
  4. 4
      sandbox/src/main.cpp

@ -0,0 +1,28 @@
#include "log.h"
namespace Bk {
std::shared_ptr<spdlog::logger> Log::CoreLogger;
std::shared_ptr<spdlog::logger> Log::AppLogger;
void Log::Init()
{
std::vector<spdlog::sink_ptr> logSinks;
logSinks.emplace_back(std::make_shared<spdlog::sinks::stdout_color_sink_mt>());
logSinks.emplace_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("bakara.log", true));
logSinks[0]->set_pattern("%^[%T] %n: %v%$");
logSinks[1]->set_pattern("[%T] [%l] %n: %v");
CoreLogger = std::make_shared<spdlog::logger>("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<spdlog::logger>("APP", begin(logSinks), end(logSinks));
spdlog::register_logger(AppLogger);
AppLogger->set_level(spdlog::level::trace);
AppLogger->flush_on(spdlog::level::trace);
}
}

@ -0,0 +1,36 @@
#pragma once
#include <bkpch.h>
#include <spdlog/spdlog.h>
#include <spdlog/fmt/ostr.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>
namespace Bk {
class Log
{
public:
static void Init();
static std::shared_ptr<spdlog::logger>& GetCoreLogger() { return CoreLogger; }
static std::shared_ptr<spdlog::logger>& GetAppLogger() { return AppLogger; }
private:
static std::shared_ptr<spdlog::logger> CoreLogger;
static std::shared_ptr<spdlog::logger> 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__)
}

@ -1,7 +1,9 @@
#include <iostream>
#include <bakara/math/math.h>
#include <bakara.h>
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";
}
Loading…
Cancel
Save