From c29b7d22d96999dcb696a16a5d1dfc804defd10a Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 23 Mar 2019 16:39:05 +0200 Subject: [PATCH] wip lite --- lite-example/example.cpp | 6 ++- lite/logger.h | 86 +++++++++++++++++++++++++++++++++++----- 2 files changed, 80 insertions(+), 12 deletions(-) diff --git a/lite-example/example.cpp b/lite-example/example.cpp index 05d772aa..929e75dd 100644 --- a/lite-example/example.cpp +++ b/lite-example/example.cpp @@ -1,7 +1,11 @@ +#define SPDLITE_ACTIVE_LEVEL SPDLITE_LEVEL_INFO #include "logger.h" int main() { //auto l = spdlog::create_lite(); - spdlog::lite::info("HELLO info {}", 123); + //spdlog::lite::info("HELLO info {}", 123); + SPDLITE_TRACE("SOME MACRO {}", 123); + SPDLITE_INFO("SOME MACRO {}", "HHHHH"); + } \ No newline at end of file diff --git a/lite/logger.h b/lite/logger.h index b762b3f5..7246411c 100644 --- a/lite/logger.h +++ b/lite/logger.h @@ -1,28 +1,92 @@ // -// Created by gabi on 3/16/19. -// +// Copyright(c) 2015-present Gabi Melman. +// Distributed under the MIT License (http://opensource.org/licenses/MIT) + #pragma once #include #include #include "spdlog/fmt/fmt.h" +// +// enable/disable log calls at compile time according to global level. +// +// define SPDLITE_ACTIVE_LEVEL to one of those (before including lite.h): + +#define SPDLITE_LEVEL_TRACE 0 +#define SPDLITE_LEVEL_DEBUG 1 +#define SPDLITE_LEVEL_INFO 2 +#define SPDLITE_LEVEL_WARN 3 +#define SPDLITE_LEVEL_ERROR 4 +#define SPDLITE_LEVEL_CRITICAL 5 +#define SPDLITE_LEVEL_OFF 6 + +#define SPDLITE_LOGGER_CALL(logger, level, ...) \ + if (logger.should_log(level)) \ + logger.log(level, __VA_ARGS__) + +#if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_TRACE +#define SPDLITE_LOGGER_TRACE(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::trace, __VA_ARGS__) +#define SPDLITE_TRACE(...) SPDLITE_LOGGER_TRACE(spdlog::lite::default_logger(), __VA_ARGS__) +#else +#define SPDLITE_LOGGER_TRACE(logger, ...) (void)0 +#define SPDLITE_TRACE(...) (void)0 +#endif + +#if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_DEBUG +#define SPDLITE_LOGGER_DEBUG(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::debug, __VA_ARGS__) +#define SPDLITE_DEBUG(...) SPDLITE_LOGGER_DEBUG(spdlog::lite::default_logger(), __VA_ARGS__) +#else +#define SPDLITE_LOGGER_DEBUG(logger, ...) (void)0 +#define SPDLITE_DEBUG(...) (void)0 +#endif + +#if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_INFO +#define SPDLITE_LOGGER_INFO(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::info, __VA_ARGS__) +#define SPDLITE_INFO(...) SPDLITE_LOGGER_INFO(spdlog::lite::default_logger(), __VA_ARGS__) +#else +#define SPDLITE_LOGGER_INFO(logger, ...) (void)0 +#define SPDLITE_INFO(...) (void)0 +#endif + +#if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_WARN +#define SPDLITE_LOGGER_WARN(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::warn, __VA_ARGS__) +#define SPDLITE_WARN(...) SPDLITE_LOGGER_WARN(spdlog::lite::default_logger(), __VA_ARGS__) +#else +#define SPDLITE_LOGGER_WARN(logger, ...) (void)0 +#define SPDLITE_WARN(...) (void)0 +#endif + +#if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_ERROR +#define SPDLITE_LOGGER_ERROR(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::err, __VA_ARGS__) +#define SPDLITE_ERROR(...) SPDLITE_LOGGER_ERROR(spdlog::lite::default_logger(), __VA_ARGS__) +#else +#define SPDLITE_LOGGER_ERROR(logger, ...) (void)0 +#define SPDLITE_ERROR(...) (void)0 +#endif + +#if SPDLITE_ACTIVE_LEVEL <= SPDLITE_LEVEL_CRITICAL +#define SPDLITE_LOGGER_CRITICAL(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::critical, __VA_ARGS__) +#define SPDLITE_CRITICAL(...) SPDLITE_LOGGER_CRITICAL(spdlog::lite::default_logger(), __VA_ARGS__) +#else +#define SPDLITE_LOGGER_CRITICAL(logger, ...) (void)0 +#define SPDLITE_CRITICAL(...) (void)0 +#endif + -//#define SPDLITE_LOGGER_INFO(logger, ...) SPDLITE_LOGGER_CALL(logger, spdlog::lite::level::info, __VA_ARGS__) -//#define SPDLITE_INFO(...) SPDLOG_LOGGER_INFO(spdlog::default_logger_raw(), __VA_ARGS__) namespace spdlog { class logger; namespace lite { enum class level{ - trace, - debug, - info, - warn, - err, - critical, - off + trace = SPDLITE_LEVEL_TRACE, + debug =SPDLITE_LEVEL_DEBUG, + info = SPDLITE_LEVEL_INFO, + warn = SPDLITE_LEVEL_WARN, + err = SPDLITE_LEVEL_ERROR, + critical = SPDLITE_LEVEL_CRITICAL, + off = SPDLITE_LEVEL_OFF }; struct src_loc {