logger: warn about log level being set too high (#392)

## Link to GitHub Issue, if one exists
n/a

## Description of change
If log level is anything but `misc` or `all`, complain using the
deferred logger.

## Testing
Tested legacy AVS (DDR X2) and newer games.
This commit is contained in:
bicarus-dev
2025-10-03 19:16:59 -07:00
committed by GitHub
parent da58503b47
commit 033e9f926a
+19 -3
View File
@@ -1939,6 +1939,7 @@ namespace avs {
static const char *LOG_LEVELS[] = { "disable", "fatal", "warning", "info", "misc", "all" }; static const char *LOG_LEVELS[] = { "disable", "fatal", "warning", "info", "misc", "all" };
char current_log_level_buffer[32] { 0 }; char current_log_level_buffer[32] { 0 };
uint32_t current_log_level = 0; uint32_t current_log_level = 0;
std::string log_level_as_str;
if (VERSION == AVSLEGACY || VERSION == AVS21360) { if (VERSION == AVSLEGACY || VERSION == AVS21360) {
auto level_node = property_search(config, config_node, "/log/level"); auto level_node = property_search(config, config_node, "/log/level");
@@ -1954,6 +1955,7 @@ namespace avs {
{ {
if (current_log_level < std::size(LOG_LEVELS)) { if (current_log_level < std::size(LOG_LEVELS)) {
log_info("avs-core", "log level: {}", LOG_LEVELS[current_log_level]); log_info("avs-core", "log level: {}", LOG_LEVELS[current_log_level]);
log_level_as_str = LOG_LEVELS[current_log_level];
} else { } else {
log_fatal("avs-core", "log level ({}) is invalid!", current_log_level); log_fatal("avs-core", "log level ({}) is invalid!", current_log_level);
} }
@@ -1973,7 +1975,7 @@ namespace avs {
level_node = property_node_create(config, config_node, NODE_TYPE_str, "/log/level", level_node = property_node_create(config, config_node, NODE_TYPE_str, "/log/level",
LOG_LEVELS[current_log_level]); LOG_LEVELS[current_log_level]);
} else { } else {
log_fatal("avs-core", "log level ({}) is invalid!", current_log_level); log_fatal("avs-core", "log level ({}) is invalid! *", current_log_level);
} }
} }
@@ -1986,12 +1988,26 @@ namespace avs {
if (property_node_refer(config, config_node, "/log/level", if (property_node_refer(config, config_node, "/log/level",
NODE_TYPE_str, current_log_level_buffer, sizeof(current_log_level_buffer)) > 0) NODE_TYPE_str, current_log_level_buffer, sizeof(current_log_level_buffer)) > 0)
{ {
log_info("avs-core", "log level: {}", current_log_level_buffer); log_info("avs-core", "log level: {} *", current_log_level_buffer);
log_level_as_str = current_log_level_buffer;
} else { } else {
log_warning("avs-core", "log level: unknown"); log_warning("avs-core", "log level: unknown *");
} }
} }
if (log_level_as_str == "disable" ||
log_level_as_str == "fatal" ||
log_level_as_str == "warning" ||
log_level_as_str == "info") {
deferredlogs::defer_error_messages({
fmt::format(
"log level is set to `{}` (either in avs-config.xml or using -loglevel)", log_level_as_str),
" if you are troubleshooting crashes or failures, it is recommended that you set ",
" AVS Log Level (-loglevel) option to `all`",
});
}
// fix time offset // fix time offset
auto t_now = std::time(nullptr); auto t_now = std::time(nullptr);
auto tm_now = *std::gmtime(&t_now); auto tm_now = *std::gmtime(&t_now);