#pragma once //#define DISABLE_LOGGING 1 #include #include //reusing flash string utilities #include "Config.h" #define LOG_SERIAL_SPEED 115200 #if _DEBUG #define LOG_LEVEL LOG_LEVEL_VERBOSE #define LOG_LEVEL_VERBOSE_ENABLED #define LOG_LEVEL_NOTICE_ENABLED #else #define LOG_LEVEL LOG_LEVEL_NOTICE #define LOG_LEVEL_NOTICE_ENABLED #endif #define NL "\n" #define LOG(level) LOG_MSG(level, "") #define LOG_MSG(level, msg) Log.level(F("[" CURRENT_LOGGER "::" CURRENT_LOGGER_FUNCTION "] " msg NL)) #define LOG_FORMAT(level, msg, ...) Log.level(F("[" CURRENT_LOGGER "::" CURRENT_LOGGER_FUNCTION "] " msg NL), __VA_ARGS__) #if defined(LOG_LEVEL_VERBOSE_ENABLED) #define VERBOSE LOG(verbose) #define VERBOSE_MSG(msg) LOG_MSG(verbose, msg) #define VERBOSE_FORMAT(msg, ...) LOG_FORMAT(verbose, msg, __VA_ARGS__) #else #define VERBOSE #define VERBOSE_MSG(msg) #define VERBOSE_FORMAT(msg, ...) #endif #if defined(LOG_LEVEL_NOTICE_ENABLED) #define NOTICE LOG(notice) #define NOTICE_MSG(msg) LOG_MSG(notice, msg) #define NOTICE_FORMAT(msg, ...) LOG_FORMAT(notice, msg, __VA_ARGS__) #else #define NOTICE #define NOTICE_MSG(msg) #define NOTICE_FORMAT(msg, ...) #endif namespace logging { void setup(); }