aboutsummaryrefslogtreecommitdiff
path: root/any_log.h
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-03-20 23:37:44 +0100
committerFederico Angelilli <code@fedang.net>2024-03-20 23:37:44 +0100
commit73225189596eae50b828670975509cfad7ba60fb (patch)
treeed3de94887c7953c73d5b675860aeced3aa6436d /any_log.h
parentf505ff79795d7d8a6255da636afac09213efc0d9 (diff)
Refactor any_log.h
Diffstat (limited to 'any_log.h')
-rw-r--r--any_log.h96
1 files changed, 63 insertions, 33 deletions
diff --git a/any_log.h b/any_log.h
index 63461f1..88954ce 100644
--- a/any_log.h
+++ b/any_log.h
@@ -2,14 +2,14 @@
#define ANY_LOG_INCLUDE
typedef enum {
- LOG_PANIC,
- LOG_ERROR,
- LOG_WARN,
- LOG_INFO,
- LOG_DEBUG,
- LOG_TRACE,
- LOG_ALL,
-} log_level_t;
+ ANY_LOG_PANIC,
+ ANY_LOG_ERROR,
+ ANY_LOG_WARN,
+ ANY_LOG_INFO,
+ ANY_LOG_DEBUG,
+ ANY_LOG_TRACE,
+ ANY_LOG_ALL,
+} any_log_level_t;
// The value of ANY_LOG_MODULE is used to indicate the current module.
// By default it is defined as __FILE__, so that it will coincide with the
@@ -32,33 +32,33 @@ typedef enum {
#define log_panic(...) \
do { \
- log_generic(LOG_PANIC, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__); \
- log_exit(ANY_LOG_MODULE, ANY_LOG_FUNC); \
+ any_log_format(ANY_LOG_PANIC, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__); \
+ any_log_exit(ANY_LOG_MODULE, ANY_LOG_FUNC); \
} while (0)
#define log_error(...) \
- log_generic(LOG_ERROR, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
+ any_log_format(ANY_LOG_ERROR, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
#define log_warn(...) \
- log_generic(LOG_WARN, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
+ any_log_format(ANY_LOG_WARN, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
#define log_info(...) \
- log_generic(LOG_INFO, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
+ any_log_format(ANY_LOG_INFO, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
#define log_debug(...) \
- log_generic(LOG_DEBUG, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
+ any_log_format(ANY_LOG_DEBUG, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
#ifdef ANY_LOG_NO_TRACE
#define log_trace(...)
#else
#define log_trace(...) \
- log_generic(LOG_TRACE, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
+ any_log_format(ANY_LOG_TRACE, ANY_LOG_MODULE, ANY_LOG_FUNC, __VA_ARGS__)
#endif
-void log_exit(const char *module, const char *func);
+void any_log_exit(const char *module, const char *func);
-void log_generic(log_level_t level, const char *module,
- const char *func, const char *format, ...);
+void any_log_format(any_log_level_t level, const char *module,
+ const char *func, const char *format, ...);
#endif
@@ -69,48 +69,78 @@ void log_generic(log_level_t level, const char *module,
#include <stdio.h>
#include <stdlib.h>
-// Using log_panic results in a call to log_exit, which should terminate
+#ifndef ANY_LOG_PANIC_STRING
+#define ANY_LOG_PANIC_STRING "panic"
+#endif
+
+#ifndef ANY_LOG_ERROR_STRING
+#define ANY_LOG_ERROR_STRING "error"
+#endif
+
+#ifndef ANY_LOG_WARN_STRING
+#define ANY_LOG_WARN_STRING "warn"
+#endif
+
+#ifndef ANY_LOG_INFO_STRING
+#define ANY_LOG_INFO_STRING "info"
+#endif
+
+#ifndef ANY_LOG_DEBUG_STRING
+#define ANY_LOG_DEBUG_STRING "debug"
+#endif
+
+#ifndef ANY_LOG_TRACE_STRING
+#define ANY_LOG_TRACE_STRING "trace"
+#endif
+
+static const char *log_level_strings[ANY_LOG_ALL] = {
+ ANY_LOG_PANIC_STRING,
+ ANY_LOG_ERROR_STRING,
+ ANY_LOG_WARN_STRING,
+ ANY_LOG_INFO_STRING ,
+ ANY_LOG_DEBUG_STRING,
+ ANY_LOG_TRACE_STRING,
+};
+
+// Using log_panic results in a call to any_log_exit, which should terminate
// the program. The value of ANY_LOG_PANIC is used to specify what action
-// to take in log_exit.
+// to take in any_log_exit.
// By default it is abort
//
-// NOTE: That log_exit should never return!
+// NOTE: That any_log_exit should never return!
//
#ifndef ANY_LOG_PANIC
#define ANY_LOG_PANIC(module, func) abort()
#endif
// NOTE: This function should be called solely by the macro log_panic
-void log_exit(const char *module, const char *func)
+void any_log_exit(const char *module, const char *func)
{
ANY_LOG_PANIC(module, func);
}
#ifndef ANY_LOG_FORMAT_BEFORE
-#define ANY_LOG_FORMAT_BEFORE(level, module, func, levels) \
- "[%s %s] %s: ", module, func, levels[level]
+#define ANY_LOG_FORMAT_BEFORE(level, module, func, level_strings) \
+ "[%s %s] %s: ", module, func, level_strings[level]
#endif
#ifndef ANY_LOG_FORMAT_AFTER
#define ANY_LOG_FORMAT_AFTER(level, module, func, levels) "\n"
#endif
-void log_generic(log_level_t level, const char *module,
- const char *func, const char *format, ...)
+void any_log_format(any_log_level_t level, const char *module,
+ const char *func, const char *format, ...)
{
- const char *log_levels[] = {
- "panic", "error", "warn",
- "info", "debug", "trace",
- };
-
- fprintf(stdout, ANY_LOG_FORMAT_BEFORE(level, module, func, log_levels));
+ fprintf(stdout,
+ ANY_LOG_FORMAT_BEFORE(level, module, func, log_level_strings));
va_list args;
va_start(args, format);
vfprintf(stdout, format, args);
va_end(args);
- fprintf(stdout, ANY_LOG_FORMAT_AFTER(level, module, func, log_levels));
+ fprintf(stdout,
+ ANY_LOG_FORMAT_AFTER(level, module, func, log_level_strings));
}
#endif