diff options
author | Danny Holman <dholman@gymli.org> | 2022-11-18 09:56:13 -0600 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2022-11-18 09:56:13 -0600 |
commit | be4f102b8aa16bb90ed7d8d51a84650987dfdb40 (patch) | |
tree | dde4c8c59c384914c23b0127b1588a467c1d7027 /server/src | |
parent | 23ff71d1709d4d564e1b8d86e0c8486722310dd3 (diff) |
server: add a logging framework
Add a logging framework so the server can output to a single point.
Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/logging.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/server/src/logging.c b/server/src/logging.c new file mode 100644 index 0000000..9084baf --- /dev/null +++ b/server/src/logging.c @@ -0,0 +1,51 @@ +#include <logging.h> +#include <stdio.h> +#include <pthread.h> + +static const char *severe = "SEVERE"; +static const char *warn = "WARN"; +static const char *info = "INFO"; +static const char *debug = "DEBUG"; + +static FILE *out_stream; + +int init_logging(FILE *out_file) { + // TODO: maybe make this a bit more thread safe + out_stream = out_file; + return 0; +} + +int vlog_msg(int level, const char *fmt, va_list args) { + char output[1024]; + int ret = 0; + switch (level) { + case LOG_SEVERE: + snprintf(output, 1024, "%s: %s", severe, fmt); + ret = vfprintf(out_stream, output, args); + break; + case LOG_WARNING: + snprintf(output, 1024, "%s: %s", warn, fmt); + ret = vfprintf(out_stream, output, args); + break; + case LOG_INFO: + snprintf(output, 1024, "%s: %s", info, fmt); + ret = vfprintf(out_stream, output, args); + break; + case LOG_DEBUG: + snprintf(output, 1024, "%s: %s", debug, fmt); + ret = vfprintf(out_stream, output, args); + break; + } + return ret; +} + +int log_msg(int level, const char *fmt, ...) { + va_list args; + int done; + + va_start(args, fmt); + done = vlog_msg(level, fmt, args); + va_end(args); + + return done; +} |