diff options
Diffstat (limited to 'log.c')
-rw-r--r-- | log.c | 45 |
1 files changed, 45 insertions, 0 deletions
@@ -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"); +} |