nwwebui named log levels.

This commit is contained in:
Mario Fetka
2026-05-22 10:28:17 +02:00
parent e8f1050246
commit 56b70a6ffc
4 changed files with 96 additions and 16 deletions

View File

@@ -238,7 +238,7 @@ Use `trace` only while debugging a concrete problem. It may include submitted bi
The `nwwebui` service has its own numeric log level:
```perl
$nw_log_level = 1;
$nw_log_level = 'info';
```
Typical meanings:
@@ -327,7 +327,7 @@ $smart_cups_print_command_template = '/usr/bin/lp -d %p -';
# nwwebui listener settings
$nw_bind_ip = '0.0.0.0';
$nw_log_level = 1;
$nw_log_level = 'info';
$nw_daemonize = 0;
$nw_pid_file = '/run/mars_nwe/nwwebui.pid';
$nw_log_file = '/var/log/mars_nwe/nwwebui.log';

View File

@@ -13,8 +13,10 @@
#define LOG_PATH_DEFAULT "@MARS_NWE_LOG_DIR@/nwwebui.log"
#define LOG_LEVEL_ERROR 0
#define LOG_LEVEL_INFO 1
#define LOG_LEVEL_DEBUG 2
#define LOG_LEVEL_WARNING 1
#define LOG_LEVEL_INFO 2
#define LOG_LEVEL_DEBUG 3
#define LOG_LEVEL_TRACE 4
#define LOG_LEVEL_DEFAULT LOG_LEVEL_INFO
#define DEFAULT_BIND_IP "0.0.0.0"

View File

@@ -91,12 +91,86 @@ static void log_reopen(const char *path)
log_open();
}
static int parse_log_level(const char *value)
{
char buf[64];
size_t i;
if (!value || !*value) {
return LOG_LEVEL_DEFAULT;
}
while (*value && isspace((unsigned char)*value)) {
value++;
}
snprintf(buf, sizeof(buf), "%s", value);
for (i = 0; buf[i]; i++) {
buf[i] = (char)tolower((unsigned char)buf[i]);
}
while (i > 0 && isspace((unsigned char)buf[i - 1])) {
buf[i - 1] = '\0';
i--;
}
if (strcmp(buf, "error") == 0 || strcmp(buf, "err") == 0 || strcmp(buf, "0") == 0) {
return LOG_LEVEL_ERROR;
}
if (strcmp(buf, "warning") == 0 || strcmp(buf, "warn") == 0 || strcmp(buf, "1") == 0) {
return LOG_LEVEL_WARNING;
}
if (strcmp(buf, "info") == 0 || strcmp(buf, "2") == 0) {
return LOG_LEVEL_INFO;
}
if (strcmp(buf, "debug") == 0 || strcmp(buf, "3") == 0) {
return LOG_LEVEL_DEBUG;
}
if (strcmp(buf, "trace") == 0 || strcmp(buf, "4") == 0) {
return LOG_LEVEL_TRACE;
}
/*
Compatibility with the old numeric values:
0 = error
1 = info
2 = debug
Named levels are preferred for new configurations.
*/
if (strcmp(buf, "old-info") == 0) {
return LOG_LEVEL_INFO;
}
return LOG_LEVEL_DEFAULT;
}
static const char *log_level_name(int level)
{
if (level <= LOG_LEVEL_ERROR) {
return "ERROR";
}
if (level == LOG_LEVEL_WARNING) {
return "WARNING";
}
if (level == LOG_LEVEL_DEBUG) {
return "DEBUG";
}
if (level >= LOG_LEVEL_TRACE) {
return "TRACE";
}
return "INFO";
}
static void log_msg(int level, const char *fmt, ...)
{
time_t now;
struct tm tm_now;
char tbuf[64];
const char *lvl = "INFO";
const char *lvl;
va_list ap;
if (level > g_log_level) {
@@ -109,11 +183,7 @@ static void log_msg(int level, const char *fmt, ...)
localtime_r(&now, &tm_now);
strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", &tm_now);
if (level == LOG_LEVEL_ERROR) {
lvl = "ERROR";
} else if (level == LOG_LEVEL_DEBUG) {
lvl = "DEBUG";
}
lvl = log_level_name(level);
fprintf(g_log_fp, "[%s] [%s] ", tbuf, lvl);
@@ -471,7 +541,7 @@ static void load_smart_conf(nw_config_t *cfg)
if (strcmp(key, "nw_bind_ip") == 0) {
snprintf(cfg->bind_ip, sizeof(cfg->bind_ip), "%s", val);
} else if (strcmp(key, "nw_log_level") == 0) {
g_log_level = atoi(val);
g_log_level = parse_log_level(val);
} else if (strcmp(key, "nw_log_file") == 0) {
snprintf(cfg->log_file, sizeof(cfg->log_file), "%s", val);
} else if (strcmp(key, "nw_ssl_enable") == 0) {

View File

@@ -125,11 +125,19 @@ $smart_cups_print_command_template = '@CUPS_LP_EXECUTABLE@ -d %p -';
# Use 127.0.0.1 for local-only testing.
$nw_bind_ip = '0.0.0.0';
# Log level used by nwwebui.
# 0 = errors only
# 1 = informational messages
# 2 = debug messages
$nw_log_level = 1;
# Log level used by the native nwwebui frontend service.
#
# Supported values, from quiet to verbose:
#
# error - only real errors
# warning - errors and warnings
# info - normal operational messages, default
# debug - additional diagnostic information
# trace - very verbose request/connection tracing
#
# Older numeric values are still accepted for compatibility, but named values
# are preferred for new configurations.
$nw_log_level = 'info';
# Run nwwebui in daemon mode by default.
# 0 = stay in foreground