diff options
author | Danny Holman <dholman@gymli.org> | 2024-08-22 20:58:03 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2024-08-22 20:58:03 -0500 |
commit | bc41d39f27c7467970b751ed3ebea28b00a8a0b3 (patch) | |
tree | 3685c14c36553e0d73fde02789c4186dbf62b6e0 /src/logging.c | |
parent | 6dbae0c34040a41f7f00fb3e7d04074b5625b2ae (diff) |
core: add a basic logging framework
Add a basic framework for logging messages to the console or to a file.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'src/logging.c')
-rw-r--r-- | src/logging.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/logging.c b/src/logging.c new file mode 100644 index 0000000..e755710 --- /dev/null +++ b/src/logging.c @@ -0,0 +1,40 @@ +#include <rune_logging.h> +#include <stdio.h> +#include <string.h> +#include <stdarg.h> + +#define LSTR_FATAL "[FATAL]" +#define LSTR_ERROR "[ERROR]" +#define LSTR_WARN "[WARNING]" +#define LSTR_INFO "[INFO]" +#define LSTR_DEBUG "[DEBUG]" + +void log_output(int level, const char *fmt, ...) { + char out[8192]; + memset(out, 0, sizeof(out)); + + va_list arg_ptr; + va_start(arg_ptr, fmt); + vsnprintf(out, 8192, fmt, arg_ptr); + va_end(arg_ptr); + + char *lvl_str; + switch (level) { + case LOG_FATAL: + lvl_str = LSTR_FATAL; + break; + case LOG_ERROR: + lvl_str = LSTR_ERROR; + break; + case LOG_WARN: + lvl_str = LSTR_WARN; + break; + case LOG_INFO: + lvl_str = LSTR_INFO; + break; + case LOG_DEBUG: + lvl_str = LSTR_DEBUG; + break; + } + printf("%s %s\n", lvl_str, out); +} |