Improve log macros

This commit is contained in:
Paul Kunysch 2019-11-02 09:40:37 +01:00
parent 6f6cadf31d
commit eb4a169cfb
2 changed files with 10 additions and 2 deletions

View File

@ -288,8 +288,8 @@ inline void critical(wstring_view_t fmt, const Args &... args)
#define SPDLOG_LOGGER_CALL(logger, level, ...) \ #define SPDLOG_LOGGER_CALL(logger, level, ...) \
do \ do \
{ \ { \
if (logger->should_log(level) || logger->should_backtrace()) \ if ((logger)->should_log(level) || (logger)->should_backtrace()) \
logger->log(spdlog::source_loc{__FILE__, __LINE__, SPDLOG_FUNCTION}, level, __VA_ARGS__); \ (logger)->log(spdlog::source_loc{__FILE__, __LINE__, SPDLOG_FUNCTION}, level, __VA_ARGS__); \
} while (0) } while (0)
#if SPDLOG_ACTIVE_LEVEL <= SPDLOG_LEVEL_TRACE #if SPDLOG_ACTIVE_LEVEL <= SPDLOG_LEVEL_TRACE

View File

@ -40,6 +40,14 @@ TEST_CASE("disable param evaluation", "[macros]")
SPDLOG_TRACE("Test message {}", throw std::runtime_error("Should not be evaluated")); SPDLOG_TRACE("Test message {}", throw std::runtime_error("Should not be evaluated"));
} }
TEST_CASE("compile with reference to logger", "[macros]")
{
auto logger = spdlog::create<spdlog::sinks::null_sink_mt>("refmacro");
auto& ref = *logger;
SPDLOG_LOGGER_TRACE(&ref, "Test message 1");
SPDLOG_LOGGER_DEBUG(&ref, "Test message 2");
}
// ensure that even if right macro level is on- don't evaluate if the logger's level is not high enough // ensure that even if right macro level is on- don't evaluate if the logger's level is not high enough
TEST_CASE("disable param evaluation2", "[macros]") TEST_CASE("disable param evaluation2", "[macros]")
{ {