diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/ouroboros/config.h.in | 1 | ||||
| -rw-r--r-- | include/ouroboros/logs.h | 47 | 
2 files changed, 34 insertions, 14 deletions
| diff --git a/include/ouroboros/config.h.in b/include/ouroboros/config.h.in index 4cbed554..c11c2d05 100644 --- a/include/ouroboros/config.h.in +++ b/include/ouroboros/config.h.in @@ -44,5 +44,6 @@  #define IRMD_MAX_FLOWS         4096  #define IRMD_THREADPOOL_SIZE   3  #define IRMD_FLOW_TIMEOUT      5000 /* ms */ +#define LOG_DIR                "/@LOG_DIR@/"  #endif diff --git a/include/ouroboros/logs.h b/include/ouroboros/logs.h index 344a7ddc..601d8340 100644 --- a/include/ouroboros/logs.h +++ b/include/ouroboros/logs.h @@ -30,32 +30,51 @@  #error You must define OUROBOROS_PREFIX before including this file  #endif +int set_logfile(char * filename); +  #define ANSI_COLOR_RED     "\x1b[31m"  #define ANSI_COLOR_GREEN   "\x1b[32m"  #define ANSI_COLOR_YELLOW  "\x1b[33m"  #define ANSI_COLOR_BLUE    "\x1b[34m"  #define ANSI_COLOR_RESET   "\x1b[0m" -#define __LOG(CLR, PFX, LVL, FMT, ARGS...)                                     \ -        do { printf(CLR PFX "(" LVL "): " FMT ANSI_COLOR_RESET "\n", ##ARGS); }\ -        while (0) +#define DEBUG_CODE "DB" +#define ERROR_CODE "EE" +#define WARN_CODE  "WW" +#define INFO_CODE  "II" +#define IMPL_CODE  "NI" + +extern FILE * logfile; + +#define __LOG(CLR, LVL, FMT, ARGS...)                                    \ +        do {                                                            \ +                if (logfile != NULL) {                                  \ +                        fprintf(logfile,                                \ +                                OUROBOROS_PREFIX "(" LVL "): "      \ +                                FMT ANSI_COLOR_RESET "\n", ##ARGS);     \ +                        fflush(logfile);                                \ +                } else {                                                \ +                        printf(CLR OUROBOROS_PREFIX "(" LVL "): "       \ +                               FMT ANSI_COLOR_RESET "\n", ##ARGS);      \ +                }                                                       \ +        } while (0) -#define LOG_ERR(FMT,   ARGS...) __LOG(ANSI_COLOR_RED, OUROBOROS_PREFIX,        \ -                                      "EE", FMT, ##ARGS) -#define LOG_WARN(FMT,  ARGS...) __LOG(ANSI_COLOR_YELLOW, OUROBOROS_PREFIX,     \ -                                      "WW", FMT, ##ARGS) -#define LOG_INFO(FMT,  ARGS...) __LOG(ANSI_COLOR_GREEN, OUROBOROS_PREFIX,      \ -                                      "II", FMT, ##ARGS) -#define LOG_NI(FMT,   ARGS...) __LOG(ANSI_COLOR_BLUE, OUROBOROS_PREFIX,        \ -                                     "NI",  FMT, ##ARGS) +#define LOG_ERR(FMT, ARGS...) __LOG(ANSI_COLOR_RED,             \ +                                    ERROR_CODE, FMT, ##ARGS) +#define LOG_WARN(FMT, ARGS...) __LOG(ANSI_COLOR_YELLOW,         \ +                                     WARN_CODE, FMT, ##ARGS) +#define LOG_INFO(FMT, ARGS...) __LOG(ANSI_COLOR_GREEN,          \ +                                     INFO_CODE, FMT, ##ARGS) +#define LOG_NI(FMT, ARGS...) __LOG(ANSI_COLOR_BLUE,             \ +                                   IMPL_CODE,  FMT, ##ARGS)  #ifdef CONFIG_OUROBOROS_DEBUG -#define LOG_DBG(FMT,   ARGS...) __LOG("", OUROBOROS_PREFIX, "DB", FMT, ##ARGS) +#define LOG_DBG(FMT, ARGS...) __LOG("", DEBUG_CODE, FMT, ##ARGS)  #else -#define LOG_DBG(FMT,   ARGS...) do { } while (0) +#define LOG_DBG(FMT, ARGS...) do { } while (0)  #endif -#define LOG_DBGF(FMT,  ARGS...) LOG_DBG("%s: " FMT, __FUNCTION__, ##ARGS) +#define LOG_DBGF(FMT, ARGS...) LOG_DBG("%s: " FMT, __FUNCTION__, ##ARGS)  #define LOG_MISSING LOG_NI("Missing code in %s:%d",__FILE__, __LINE__) | 
