summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-08-22 20:58:03 -0500
committerDanny Holman <dholman@gymli.org>2024-08-22 20:58:03 -0500
commitbc41d39f27c7467970b751ed3ebea28b00a8a0b3 (patch)
tree3685c14c36553e0d73fde02789c4186dbf62b6e0
parent6dbae0c34040a41f7f00fb3e7d04074b5625b2ae (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>
-rw-r--r--.gitignore4
-rw-r--r--include/rune_logging.h16
-rw-r--r--src/logging.c40
3 files changed, 60 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 78e4e10..29cd635 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,7 @@
*.lzo
*.o
*.o.*
+*.out
*.patch
*.so
*.tar
@@ -32,3 +33,6 @@ cscope.*
ncscope.*
tags
TAGS
+
+# Output directory
+bin/
diff --git a/include/rune_logging.h b/include/rune_logging.h
new file mode 100644
index 0000000..a0b9e29
--- /dev/null
+++ b/include/rune_logging.h
@@ -0,0 +1,16 @@
+#ifndef RUNE_LOGGING_H
+#define RUNE_LOGGING_H
+
+#include <rune_types.h>
+
+enum log_level {
+ LOG_FATAL,
+ LOG_ERROR,
+ LOG_WARN,
+ LOG_INFO,
+ LOG_DEBUG
+};
+
+void log_output(int level, const char *fmt, ...);
+
+#endif
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);
+}