[PATCH 5/6] Refine log-level usage, define values

Sven Göthel sgothel at jausoft.com
Mon Jul 20 00:47:01 UTC 2026


>From 6ead0ef2bc361fa7e0a292709922133aeb3776b3 Mon Sep 17 00:00:00 2001
From: Sven Göthel <sgothel at jausoft.com>
Date: Mon, 20 Jul 2026 02:19:24 +0200
Subject: Refine log-level usage, define values


diff --git a/cache.c b/cache.c
index 7f11fa7..8165f48 100644
--- a/cache.c
+++ b/cache.c
@@ -120,7 +120,7 @@ static int sendslot_to_minrate(time_t tStart, time_t tNow, size_t off,
 static int sendslot_ok(time_t tStart, time_t tNow, size_t size,
 		       struct cache_slot *slot)
 {
-	if (ctx.cfg.log_level > 90) {
+	if (ctx.cfg.log_level >= LOG_LVL_DBG) {
 		const time_t td_total = tNow - tStart;
 		const long rate = size / MY_MAX(1, td_total);
 		cache_log("[cgit] send_slot status: sent cache %s (%s) %ld bytes) to "
@@ -134,7 +134,7 @@ static int sendslot_ok(time_t tStart, time_t tNow, size_t size,
 
 static int sendslot_ok2(time_t tStart, size_t size, struct cache_slot *slot)
 {
-	if (ctx.cfg.log_level > 90) {
+	if (ctx.cfg.log_level >= LOG_LVL_DBG) {
 		return sendslot_ok(tStart, time(NULL), size, slot);
 	}
 	return 0;
@@ -329,7 +329,7 @@ static int lock_slot(struct cache_slot *slot, time_t tStart)
 		++wait_count;
 		usleep(100000); // 100ms sleep instead of sched_yield()
 	}
-	if (wait_count && ctx.cfg.log_level > 90) {
+	if (wait_count && ctx.cfg.log_level >= LOG_LVL_DBG) {
 		cache_log("[cgit] Lock: Waited %ds (%zu tries, cache_fd %d) to lock slot %s (%s)\n",
 			  (int)(time(NULL) - tStart), wait_count, slot->cache_fd,
               slot->lock_name, slot->key);
@@ -338,7 +338,7 @@ static int lock_slot(struct cache_slot *slot, time_t tStart)
 		int err = open_slot(slot);
 		if (!err && slot->match) {
 			// concurrent process wrote the file
-			if (ctx.cfg.log_level > 50) {
+			if (ctx.cfg.log_level >= LOG_LVL_WARN) {
 				cache_log("[cgit] Lock: Concurrent produced slot %s (%s)\n",
 					  slot->lock_name, slot->key);
 			}
@@ -366,7 +366,7 @@ static int lock_slot(struct cache_slot *slot, time_t tStart)
 		close_lock(slot);
 		return saved_errno;
 	}
-	if (ctx.cfg.log_level > 90) {
+	if (ctx.cfg.log_level >= LOG_LVL_DBG) {
 		cache_log("[cgit] Lock (%ds): Successful locked slot %s (%s)\n",
 			  (int)(time(NULL) - tStart), slot->lock_name, slot->key);
 	}
@@ -397,7 +397,7 @@ static int unlock_slot(struct cache_slot *slot, enum lock_file_op_t lock_file_op
 			err = errno;
 		}
 	}
-	if (ctx.cfg.log_level < 90 && ENOENT == err) {
+	if (ctx.cfg.log_level < LOG_LVL_DBG && ENOENT == err) {
 		err = 0; // suppress ENOENT messages
 	}
 	if (err) {
@@ -426,7 +426,7 @@ static int unlock_slot(struct cache_slot *slot, enum lock_file_op_t lock_file_op
 		}
 	}
 	if (!err) {
-		if (ctx.cfg.log_level > 90) {
+		if (ctx.cfg.log_level >= LOG_LVL_DBG) {
 			cache_log("[cgit] Unlock: Successful unlocked slot %s (%s)\n",
 				  slot->lock_name, slot->key);
 		}
diff --git a/cgit.c b/cgit.c
index 83665ca..dc5e41c 100644
--- a/cgit.c
+++ b/cgit.c
@@ -1096,7 +1096,7 @@ int cmd_main(int argc, const char **argv)
 
 	cgit_parse_args(argc, argv);
 	parse_configfile(expand_macros(ctx.env.cgit_config), config_cb);
-	if (ctx.cfg.log_level)
+	if (ctx.cfg.log_level >= LOG_LVL_VERBOSE)
 		print_config(stderr, "[cgit] init: ");
 	ctx.repo = NULL;
 	http_parse_querystring(ctx.qry.raw, querystring_cb);
diff --git a/cgit.h b/cgit.h
index df6a6c1..2691fb3 100644
--- a/cgit.h
+++ b/cgit.h
@@ -193,6 +193,10 @@ struct cgit_query {
 	char *vpath;
 };
 
+typedef enum {
+	LOG_LVL_ERR=0, LOG_LVL_WARN=50, LOG_LVL_DBG=75, LOG_LVL_VERBOSE=100
+} log_level_t;
+
 struct cgit_config {
 	int log_level; ///< defaults to zero
 	char *agefile;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index de25244..0c40561 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -474,8 +474,11 @@ virtual-root::
 	same kind of virtual urls, so this option will probably be deprecated.
 
 log-level::
-	Specifies the logging level. Above zero adds verbose logging.
-	Default value: "0".
+	Specifies the logging level.
+	Zero only logs errors (LOG_LVL_ERR), greater-equal 50 adds warnings (LOG_LVL_WARN),
+	greater-equal 75 adds debug messages
+	and greater-equal 100 adds verbose information (LOG_LVL_VERBOSE).
+	Default value: "0" (error logging only).
 
 REPOSITORY SETTINGS
 -------------------


More information about the CGit mailing list