diff options
Diffstat (limited to 'src/core/logs.h')
-rw-r--r-- | src/core/logs.h | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/core/logs.h b/src/core/logs.h index 238c3ba..27dd039 100644 --- a/src/core/logs.h +++ b/src/core/logs.h @@ -25,7 +25,10 @@ #define _CORE_LOGS_H +#include <errno.h> #include <stdarg.h> +#include <string.h> +#include <openssl/err.h> #include <i18n.h> @@ -38,14 +41,19 @@ typedef enum _LogMessageType LMT_INFO, /* Information sur l'exécution */ LMT_PROCESS, /* Début de tâche quelconque */ LMT_WARNING, /* Avertissment à remonter */ - LMT_ERROR, /* Erreur de traitement */ LMT_BAD_BINARY, /* Binaire malformé */ + LMT_ERROR, /* Erreur de traitement interne*/ + LMT_EXT_ERROR, /* Erreur de traitement externe*/ LMT_COUNT } LogMessageType; + +/* ------------------------ EMISSIONS DE MESSAGES CLASSIQUES ------------------------ */ + + /* Fournit la verbosité des messages système. */ LogMessageType get_log_verbosity(void); @@ -63,4 +71,36 @@ void log_variadic_message(LogMessageType, const char *, ...); +/* ------------------------ REMONTEE D'EVENEMENTS INATTENDUS ------------------------ */ + + +#define LOG_ERROR(tp, msg) \ + log_variadic_message(tp, "[%s:%u] %s", __FUNCTION__, __LINE__, msg); + +#define LOG_ERROR_N(func) \ + do \ + { \ + char __msg[1024]; \ + char *__msg_ptr; \ + __msg_ptr = strerror_r(errno, __msg, sizeof(__msg)); \ + log_variadic_message(LMT_EXT_ERROR, "[%s:%u] %s: %s", __FUNCTION__, __LINE__, func, __msg_ptr); \ + } \ + while (0) + +#define LOG_ERROR_OPENSSL \ + do \ + { \ + unsigned long __err; \ + const char *__msg; \ + __err = ERR_get_error(); \ + __msg = ERR_reason_error_string(__err); \ + if (__msg != NULL) \ + log_variadic_message(LMT_EXT_ERROR, "[%s:%u] %s", __FUNCTION__, __LINE__, __msg); \ + else \ + log_variadic_message(LMT_EXT_ERROR, "[%s:%u] unamed error", __FUNCTION__, __LINE__); \ + } \ + while (0) + + + #endif /* _CORE_LOGS_H */ |