From 6138ffe99d016cc311f250bc1555b5403b8b1216 Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Thu, 08 Oct 2026 17:18:04 +0000
Subject: [PATCH] GS-2555
---
logger.js | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/logger.js b/logger.js
index f4dd416..e81f4b5 100644
--- a/logger.js
+++ b/logger.js
@@ -5,16 +5,43 @@
/////////////////////////////////////////////////////////////////////////
+const LEVELS = {debug: 10, info: 20, warn: 30, error: 40}
+const DEFAULT_LEVEL = "info"
+
+// level configured from settings (see settings.js); env LOG_LEVEL overrides it
+let settingsLevel = null
+
module.exports = {
debug: msg => log("DEBUG", msg),
info: msg => log("INFO", msg),
warn: msg => log("WARN", msg),
error: msg => log("ERROR", msg),
+ setLevel,
+ level: currentLevel,
}
/////////////////////////////////////////////////////////////////////////
+/**
+ * Set the level from settings. The LOG_LEVEL env var still takes precedence.
+ */
+function setLevel (level) {
+ settingsLevel = level ? level.toString().trim().toLowerCase() : null
+}
+
+/**
+ * Resolve the active log level: LOG_LEVEL env var > settings level > "info".
+ */
+function currentLevel () {
+ const level = process.env.LOG_LEVEL || settingsLevel || DEFAULT_LEVEL
+ return level.toString().trim().toLowerCase()
+}
+
function log (level, msg) {
+ const threshold = currentLevel()
+ if (threshold === "silent" || threshold === "off") return
+ if (LEVELS[level.toLowerCase()] < (LEVELS[threshold] ?? LEVELS[DEFAULT_LEVEL])) return
+
if (!_.isString(msg)) {
if (msg.message) {
msg = msg.message
--
Gitblit v1.8.0