Added function implementations for modifying the global logging mask as well as the mask for each stream (local mask)

This commit is contained in:
2025-07-07 22:44:29 +10:00
parent ab95363f51
commit b1c0b714cd

View File

@@ -38,6 +38,16 @@ void terminate_logger()
logger_state.initialized = 0x00;
}
void logger_set_global_mask(LOG_LEVEL mask)
{ logger_state.global_mask = mask; }
void logger_set_mask(u8 index, LOG_LEVEL mask)
{
if (index > sizeof(logger_state.streams) / sizeof(logger_stream_t))
return;
logger_state.streams[index].mask = mask;
}
inline FILE* logger_stream_get_file(logger_stream_t* state)
{
return (FILE*)((state->stream & 0xffffffffffff) | ((u64)stdout & 0xffff0000000000));
@@ -79,6 +89,13 @@ void logger_remove_stream(u8 index)
logger_state.num_streams--;
}
logger_stream_t* logger_get_stream(u8 index)
{
if (index > sizeof(logger_state.streams) / sizeof(logger_stream_t))
return NULL;
return logger_state.streams+index;
}
u8 logger_find_stream(FILE* target)
{
for (size_t i = 0; i < BASALT_LOGGER_MAX_STREAMS; ++i)
@@ -129,13 +146,13 @@ void basalt_log(const LOG_LEVEL level, const char* msg, ...)
if (!err)
{
int n_chars = (int)strftime(time_buffer, sizeof(time_buffer), "%d-%m-%y %R:%S", &tm_info);
fprintf(out, "[%*s %*s]: ", (int)sizeof(log_prefixes[0]), log_prefixes[err_level], n_chars, time_buffer);
fprintf(out, "[%*s %*s]: ", (int)sizeof(log_prefixes[0])-1, log_prefixes[err_level], n_chars, time_buffer);
}
else
fprintf(out, "[%*s]: ", (int)sizeof(log_prefixes[0]), log_prefixes[err_level]);
fprintf(out, "[%*s]: ", (int)sizeof(log_prefixes[0])-1, log_prefixes[err_level]);
}
else
fprintf(out, "[%*s]: ", (int)sizeof(log_prefixes[0]), log_prefixes[err_level]);
fprintf(out, "[%*s]: ", (int)sizeof(log_prefixes[0])-1, log_prefixes[err_level]);
}
__builtin_va_list argstart;
va_start(argstart, msg);