diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/ouroboros/logs.h | 74 | 
1 files changed, 53 insertions, 21 deletions
diff --git a/include/ouroboros/logs.h b/include/ouroboros/logs.h index 08ea29c7..479cae4a 100644 --- a/include/ouroboros/logs.h +++ b/include/ouroboros/logs.h @@ -23,18 +23,16 @@  #ifndef OUROBOROS_LOGS_H  #define OUROBOROS_LOGS_H -#include <unistd.h> -#include <stdio.h> -#include <stdbool.h> -#include <syslog.h> -  #ifndef OUROBOROS_PREFIX  #error You must define OUROBOROS_PREFIX before including this file  #endif -void log_init(bool sysout); +#include <ouroboros/hash.h> -void log_fini(void); +#include <unistd.h> +#include <stdio.h> +#include <stdbool.h> +#include <syslog.h>  #define CLR_RED     "\x1b[31m"  #define CLR_GREEN   "\x1b[32m" @@ -48,27 +46,61 @@ void log_fini(void);  extern bool log_syslog; -#define __olog(CLR, LVL, SYSLVL, ...)                                   \ -        do {                                                            \ -                if (log_syslog) {                                       \ -                        syslog(SYSLVL, __VA_ARGS__);                    \ -                } else {                                                \ -                        printf(CLR "==%05d== " OUROBOROS_PREFIX         \ -                               "(" LVL "): ", getpid());                \ -                        printf(__VA_ARGS__);                            \ -                        printf(CLR_RESET "\n");                         \ -                        fflush(stdout);                                 \ -                }                                                       \ +void log_init(bool sysout); + +void log_fini(void); + + +#define __olog(CLR, LVL, SYSLVL, ...)                                         \ +        do {                                                                  \ +                if (log_syslog) {                                             \ +                        syslog(SYSLVL, __VA_ARGS__);                          \ +                } else {                                                      \ +                        printf(CLR "==%05d== " OUROBOROS_PREFIX               \ +                               "(" LVL "): ", getpid());                      \ +                        printf(__VA_ARGS__);                                  \ +                        printf(CLR_RESET "\n");                               \ +                        fflush(stdout);                                       \ +                }                                                             \ +        } while (0) + +#define __olog_id(CLR, LVL, SYSLVL, id, fmt, ...)                             \ +        do {                                                                  \ +                if (log_syslog) {                                             \ +                        syslog(SYSLVL, "[" HASH_FMT64 "] " fmt,               \ +                               HASH_VAL64(id), ## __VA_ARGS__);               \ +                } else {                                                      \ +                        printf(CLR "==%05d== " OUROBOROS_PREFIX               \ +                               "(" LVL "): ", getpid());                      \ +                        printf("[" HASH_FMT64 "] " fmt,                       \ +                               HASH_VAL64(id), ## __VA_ARGS__);               \ +                        printf(CLR_RESET "\n");                               \ +                        fflush(stdout);                                       \ +                }                                                             \          } while (0) -#define log_err(...)  __olog(CLR_RED, ERROR_CODE, LOG_ERR, __VA_ARGS__) -#define log_warn(...) __olog(CLR_YELLOW, WARN_CODE, LOG_WARNING, __VA_ARGS__) -#define log_info(...) __olog(CLR_GREEN, INFO_CODE, LOG_INFO, __VA_ARGS__) +#define log_err(...)                                                          \ +         __olog(CLR_RED, ERROR_CODE, LOG_ERR, __VA_ARGS__) +#define log_warn(...)                                                         \ +        __olog(CLR_YELLOW, WARN_CODE, LOG_WARNING, __VA_ARGS__) +#define log_info(...)                                                         \ +        __olog(CLR_GREEN, INFO_CODE, LOG_INFO, __VA_ARGS__) + + +#define log_err_id(id, fmt, ...)                                              \ +        __olog_id(CLR_RED, ERROR_CODE, LOG_ERR, id, fmt, ## __VA_ARGS__) +#define log_warn_id(id, fmt, ...)                                             \ +        __olog_id(CLR_YELLOW, WARN_CODE, LOG_WARNING, id, fmt, ## __VA_ARGS__) +#define log_info_id(id, fmt, ...)                                             \ +        __olog_id(CLR_GREEN, INFO_CODE, LOG_INFO, id, fmt, ## __VA_ARGS__)  #ifdef CONFIG_OUROBOROS_DEBUG  #define log_dbg(...)  __olog("", DEBUG_CODE, LOG_DEBUG, __VA_ARGS__) +#define log_dbg_id(id, fmt, ...)                                              \ +        __olog_id("", DEBUG_CODE, LOG_DEBUG, id, fmt, ## __VA_ARGS__)  #else  #define log_dbg(...)  do { } while (0) +#define log_dbg_id(...)  do { } while (0)  #endif  #endif /* OUROBOROS_LOGS_H */  | 
