From ae63fef993c2b3ba19f89cc7efe01cbb04e7cf3e Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Wed, 1 Mar 2023 19:38:36 +0100 Subject: [PATCH] LOG: Add a flag in the config to toggle verbose log level indications --- inc/lektor/common.h | 1 + inc/lektor/internal/config.def | 9 +++++---- src/base/common.c | 26 +++++++++++++++++++------- src/main/lkt.c | 1 + src/main/server.c | 4 ++++ 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/inc/lektor/common.h b/inc/lektor/common.h index 5fa57233..57a21ea1 100644 --- a/inc/lektor/common.h +++ b/inc/lektor/common.h @@ -137,6 +137,7 @@ typedef enum { } LOG_LEVEL; struct lkt_logfile; +void lkt_set_log_level_verbose(bool); void lkt_set_log_level(LOG_LEVEL); void lkt_set_log_logfile(struct lkt_logfile *); LOG_LEVEL lkt_get_log_level(void); diff --git a/inc/lektor/internal/config.def b/inc/lektor/internal/config.def index 40a9e847..aaab5da7 100644 --- a/inc/lektor/internal/config.def +++ b/inc/lektor/internal/config.def @@ -18,10 +18,11 @@ comment("The 'log/level' will override the 'log' with no section") comment("The log files will be present in the 'log/folder', at most 'file_count'.") comment("Every file will be rotated when the current file has reached the maximum") comment("number of lines.") -value_opt("level", "INFO") -value_opt("folder", "/home/kara/logs") -value_opt("file_count", "10") -value_opt("line_count", "1000") +value_opt("level", "INFO") +value_opt("lvl_verbose", "1") +value_opt("folder", "/home/kara/logs") +value_opt("file_count", "10") +value_opt("line_count", "1000") /* SERVER */ section("server") diff --git a/src/base/common.c b/src/base/common.c index 3a89b3fc..d77da87e 100644 --- a/src/base/common.c +++ b/src/base/common.c @@ -40,8 +40,15 @@ __set_assert(void) /* Log functions */ -static LOG_LEVEL ___log_level = ___LAST_UNUSED_LOG_LEVEL; /* All by default */ -extern struct lkt_logfile *___log_logfile; /* Use the logfile globaly */ +static bool ___log_level_verbose = false; /* Set whether the log level is verbose or contracted */ +static LOG_LEVEL ___log_level = ___LAST_UNUSED_LOG_LEVEL; /* All by default */ +extern struct lkt_logfile *___log_logfile; /* Use the logfile globaly */ + +void +lkt_set_log_level_verbose(bool flag) +{ + ___log_level_verbose = flag; +} void lkt_set_log_level(LOG_LEVEL lvl) @@ -90,12 +97,17 @@ ___lkt_log(LOG_LEVEL level, const char *section, const char *func, const char *f if (level > ___log_level) return; - char c_level = level == LOG_LEVEL_ERROR ? '!' - : level == LOG_LEVEL_WARN ? '*' - : level == LOG_LEVEL_INFO ? '.' - : ' '; + const char *const c_level = (level == LOG_LEVEL_ERROR) && ___log_level_verbose ? "ERROR" + : (level == LOG_LEVEL_WARN) && ___log_level_verbose ? "WARN " + : (level == LOG_LEVEL_INFO) && ___log_level_verbose ? "INFO " + : (level == LOG_LEVEL_DEBUG) && ___log_level_verbose ? "DEBUG" + : (level == LOG_LEVEL_ERROR) && (!___log_level_verbose) ? "!" + : (level == LOG_LEVEL_WARN) && (!___log_level_verbose) ? "*" + : (level == LOG_LEVEL_INFO) && (!___log_level_verbose) ? "." + : (level == LOG_LEVEL_DEBUG) && (!___log_level_verbose) ? " " + : " "; ssize_t count = - safe_snprintf(line, LKT_MESSAGE_MAX, " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n", c_level, + safe_snprintf(line, LKT_MESSAGE_MAX, " %s [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n", c_level, hour, min, sec, section, func, file, line_number, format); /* Check for overflow */ if (count >= LKT_MESSAGE_MAX - 1) { diff --git a/src/main/lkt.c b/src/main/lkt.c index af5ef3f7..ba8a273a 100644 --- a/src/main/lkt.c +++ b/src/main/lkt.c @@ -1384,6 +1384,7 @@ lkt_logfile_write(UNUSED struct lkt_logfile *logfile, UNUSED const char *line) int main(int argc, const char **argv) { + lkt_set_log_level_verbose(true); lkt_segv_quiet(); lkt_install_segv_handler(); lkt_set_log_level(LOG_LEVEL_INFO); diff --git a/src/main/server.c b/src/main/server.c index 7d9225c1..80ffc083 100644 --- a/src/main/server.c +++ b/src/main/server.c @@ -55,6 +55,7 @@ main(int argc, char *argv[]) int autoclear; int opt; + int log_lvl_verbose; int check_exclusive = 1; int dump_and_abort = 0; char *conf_file = LKT_ALLOC_ARRAY(char, PATH_MAX); @@ -105,11 +106,14 @@ main(int argc, char *argv[]) lkt_set_log_logfile(logfile); /* Read the configuration. We already know that the config is valid */ + database_config_get_int(srv.db, "log", "lvl_verbose", &log_lvl_verbose); database_config_get_int(srv.db, "player", "autoclear", &autoclear); database_config_get_text(srv.db, "database", "kara_dir", kara_dir, PATH_MAX); database_config_get_text(srv.db, "server", "host", srv.host, HOST_NAME_MAX); database_config_get_text(srv.db, "server", "port", srv.port, 5); + lkt_set_log_level_verbose((bool)log_lvl_verbose); + /* Quick check with an explicit error message, to remide the users to * create the kara folder */ FAIL_IF(access(kara_dir, R_OK | W_OK), "No access in read / write for folder %s", kara_dir); -- GitLab