43 lines
1.0 KiB
C
43 lines
1.0 KiB
C
|
void
|
||
|
logger_write(int verbosity, char const* format, ...)
|
||
|
{
|
||
|
time_t raw_time = time(NULL);
|
||
|
struct tm* separated_time = localtime(&raw_time);
|
||
|
|
||
|
char text_buf[128];
|
||
|
char* text_buf_ptr = text_buf;
|
||
|
text_buf_ptr += snprintf(
|
||
|
text_buf_ptr,
|
||
|
sizeof(text_buf),
|
||
|
"[%02d:%02d:%02d] ",
|
||
|
separated_time->tm_hour,
|
||
|
separated_time->tm_min,
|
||
|
separated_time->tm_sec);
|
||
|
|
||
|
FILE* io_stream = stdout;
|
||
|
switch (verbosity)
|
||
|
{
|
||
|
case LOG_TYPE_DEBUG: {
|
||
|
text_buf_ptr += snprintf(text_buf_ptr, sizeof(text_buf), " [debug] ");
|
||
|
} break;
|
||
|
case LOG_TYPE_INFO: {
|
||
|
text_buf_ptr += snprintf(text_buf_ptr, sizeof(text_buf), " [info] ");
|
||
|
} break;
|
||
|
case LOG_TYPE_WARN: {
|
||
|
text_buf_ptr += snprintf(text_buf_ptr, sizeof(text_buf), " [warn] ");
|
||
|
} break;
|
||
|
case LOG_TYPE_ERROR: {
|
||
|
io_stream = stderr;
|
||
|
text_buf_ptr += snprintf(text_buf_ptr, sizeof(text_buf), " [error] ");
|
||
|
} break;
|
||
|
default: break;
|
||
|
}
|
||
|
|
||
|
va_list args;
|
||
|
va_start(args, format);
|
||
|
text_buf_ptr += snprintf(text_buf_ptr, sizeof(text_buf), "%s\n", format);
|
||
|
vfprintf(io_stream, text_buf, args);
|
||
|
va_end(args);
|
||
|
}
|
||
|
|