From 2920ccfa508fe5e8c32905fe102758b65fb37574 Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Thu, 08 Oct 2026 16:42:29 +0000
Subject: [PATCH] GS-2555

---
 logger.js |   32 +++++++++++++++++++++++++++++++-
 1 files changed, 31 insertions(+), 1 deletions(-)

diff --git a/logger.js b/logger.js
index f3c4b82..e81f4b5 100644
--- a/logger.js
+++ b/logger.js
@@ -1,19 +1,47 @@
 const _ = require("lodash")
 const dayjs = require("dayjs")
 const colors = require("colors/safe")
+const fs = require("node:fs/promises")
 
 /////////////////////////////////////////////////////////////////////////
+
+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
@@ -28,7 +56,9 @@
    }
    level = _.padEnd(level, 5)
    level = format(level.toLowerCase())
-   console.log(`${level} ${dayjs().format("DD.MM.YYYY HH:mm:ss")} - ${msg}`)
+   let message = `${level} ${dayjs().format("DD.MM.YYYY HH:mm:ss")} - ${msg}`
+   console.log(message)
+   return fs.appendFile("log.log", message + "\n")
 }
 
 function format (level) {

--
Gitblit v1.8.0