#pragma once #include #include "httpd-platform.h" #include "httpd-types.h" #ifndef VERBOSE_LOGGING #define VERBOSE_LOGGING 1 #endif #ifndef LOG_EOL #define LOG_EOL "\n" #endif // split IP for printf %d.%d.%d.%d #define IP_SPLIT(ip) ip&0xFF, (ip>>8)&0xFF, (ip>>16)&0xFF, (ip>>24)&0xFF /** * Print a startup banner message (printf syntax) * Uses bright green color */ #define banner(fmt, ...) \ do { \ httpd_printf(LOG_EOL "\x1b[32;1m[i] " fmt "\x1b[0m" LOG_EOL, ##__VA_ARGS__); \ } while(0) /** * Same as 'info()', but enabled even if verbose logging is disabled. * This can be used to print version etc under the banner. */ #define banner_info(fmt, ...) \ do { \ httpd_printf("\x1b[32m[i] " fmt "\x1b[0m"LOG_EOL, ##__VA_ARGS__); \ } while(0) /** * Empty line in the headers */ #define banner_gap() \ do { \ httpd_printf(LOG_EOL); \ } while(0) #if VERBOSE_LOGGING /** * Print a debug log message (printf format) */ #define dbg(fmt, ...) \ do { \ httpd_printf("[ ] " fmt LOG_EOL, ##__VA_ARGS__); \ } while(0) /** * Print a info log message (printf format) * Uses bright green color */ #define info(fmt, ...) \ do { \ httpd_printf("[i] " fmt "\x1b[0m"LOG_EOL, ##__VA_ARGS__); \ } while(0) #else #define dbg(fmt, ...) #define info(fmt, ...) #endif /** * Print a error log message (printf format) * Uses bright red color */ #define error(fmt, ...) \ do { \ httpd_printf("[E] " fmt "\x1b[0m"LOG_EOL, ##__VA_ARGS__); \ } while(0) /** * Print a warning log message (printf format) * Uses bright yellow color */ #define warn(fmt, ...) \ do { \ httpd_printf("[W] " fmt "\x1b[0m"LOG_EOL, ##__VA_ARGS__); \ } while(0) // --------------- logging categories -------------------- #ifndef DEBUG_ROUTER #define DEBUG_ROUTER 1 #endif #ifndef DEBUG_ESPFS #define DEBUG_ESPFS 0 #endif #ifndef DEBUG_WS #define DEBUG_WS 1 #endif #ifndef DEBUG_HTTP #define DEBUG_HTTP 1 #endif #ifndef DEBUG_HTTPC #define DEBUG_HTTPC 1 #endif #ifndef DEBUG_HEATSHRINK #define DEBUG_HEATSHRINK 0 #endif #ifndef DEBUG_MALLOC #define DEBUG_MALLOC 1 #endif // router (resolving urls to serve) #if DEBUG_ROUTER #define router_warn(...) warn(__VA_ARGS__) #define router_dbg(...) dbg(__VA_ARGS__) #define router_error(...) error(__VA_ARGS__) #define router_info(...) info(__VA_ARGS__) #else #define router_dbg(...) #define router_warn(...) #define router_error(...) #define router_info(...) #endif // filesystem #if DEBUG_ESPFS #define espfs_warn(...) warn(__VA_ARGS__) #define espfs_dbg(...) dbg(__VA_ARGS__) #define espfs_error(...) error(__VA_ARGS__) #define espfs_info(...) info(__VA_ARGS__) #else #define espfs_dbg(...) #define espfs_warn(...) #define espfs_error(...) #define espfs_info(...) #endif // websocket #if DEBUG_WS #define ws_warn(...) warn(__VA_ARGS__) #define ws_dbg(...) dbg(__VA_ARGS__) #define ws_error(...) error(__VA_ARGS__) #define ws_info(...) info(__VA_ARGS__) #else #define ws_dbg(...) #define ws_warn(...) #define ws_error(...) #define ws_info(...) #endif // server #if DEBUG_HTTP #define http_warn(...) warn(__VA_ARGS__) #define http_dbg(...) dbg(__VA_ARGS__) #define http_error(...) error(__VA_ARGS__) #define http_info(...) info(__VA_ARGS__) #else #define http_dbg(...) #define http_warn(...) #define http_error(...) #define http_info(...) #endif // client #if DEBUG_HTTPC #define httpc_warn(...) warn(__VA_ARGS__) #define httpc_dbg(...) dbg(__VA_ARGS__) #define httpc_error(...) error(__VA_ARGS__) #define httpc_info(...) info(__VA_ARGS__) #else #define httpc_dbg(...) #define httpc_warn(...) #define httpc_error(...) #define httpc_info(...) #endif // captive portal #if DEBUG_HEATSHRINK #define heatshrink_warn(...) warn(__VA_ARGS__) #define heatshrink_dbg(...) dbg(__VA_ARGS__) #define heatshrink_error(...) error(__VA_ARGS__) #define heatshrink_info(...) info(__VA_ARGS__) #else #define heatshrink_dbg(...) #define heatshrink_warn(...) #define heatshrink_error(...) #define heatshrink_info(...) #endif // all malloc usage #if DEBUG_MALLOC #define mem_dbg(...) dbg(__VA_ARGS__) #else #define mem_dbg(...) #endif