SpriteHTTPD - embedded HTTP server with read-only filesystem and templating, originally developed for ESP8266, now stand-alone and POSIX compatible.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
spritehttpd/spritehttpd/include/httpd-logging.h

197 lines
4.0 KiB

#pragma once
#include <stdio.h>
#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