aboutsummaryrefslogtreecommitdiff
path: root/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'log.c')
-rw-r--r--log.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/log.c b/log.c
new file mode 100644
index 0000000..bdf7198
--- /dev/null
+++ b/log.c
@@ -0,0 +1,45 @@
+/*
+ * Created by yuuta on 1/1/22.
+ */
+
+#include "common.h"
+#include "log.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <assert.h>
+
+void g_log(enum log_level level,
+ const char *file,
+ int line,
+ const char *format,
+ ...) {
+ int stream = level <= log_warn || level == log_debug ? p_env.err : p_env.out;
+ switch (level) {
+ case log_fetal:
+ dprintf(stream, "F");
+ break;
+ case log_error:
+ dprintf(stream, "E");
+ break;
+ case log_warn:
+ dprintf(stream, "W");
+ break;
+ case log_info:
+ dprintf(stream, "I");
+ break;
+ case log_debug:
+ dprintf(stream, "D");
+ break;
+ default:
+ dprintf(p_env.err, "Unknown log level: %d.\n", level);
+ assert(0);
+ }
+ dprintf(stream, "[%s:%d]: ",
+ file, line);
+ va_list list;
+ va_start(list, format);
+ vdprintf(stream, format, list);
+ va_end(list);
+ dprintf(stream, "\n");
+}