From ead0385edf9c050d5d7369267b546760cd2b0c5b Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 15 Apr 2025 17:52:34 +0100 Subject: [PATCH 1/5] Colourise the Node-RED logs --- package.json | 1 + .../node_modules/@node-red/util/lib/log.js | 19 ++++++++++++++----- .../node_modules/@node-red/util/package.json | 1 + 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d2fb401b6..457538bff 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "basic-auth": "2.0.1", "bcryptjs": "2.4.3", "body-parser": "1.20.3", + "chalk": "^4.1.2", "cheerio": "1.0.0-rc.10", "clone": "2.1.2", "content-type": "1.0.5", diff --git a/packages/node_modules/@node-red/util/lib/log.js b/packages/node_modules/@node-red/util/lib/log.js index 7b7e9b2dc..42efde4b5 100644 --- a/packages/node_modules/@node-red/util/lib/log.js +++ b/packages/node_modules/@node-red/util/lib/log.js @@ -23,6 +23,7 @@ var util = require("util"); var EventEmitter = require("events").EventEmitter; var i18n = require("./i18n"); +const chalk = require("chalk"); var levels = { off: 1, @@ -47,6 +48,15 @@ var levelNames = { 99: "metric" }; +var levelColours = { + 10: 'red', + 20: 'red', + 30: 'yellow', + 40: 'white', + 50: 'cyan', + 60: 'gray' +}; + var logHandlers = []; var verbose; @@ -75,20 +85,19 @@ LogHandler.prototype.shouldReportMessage = function(msglevel) { msglevel <= this.logLevel; } - // Older versions of Node-RED used the deprecated util.log function. // With Node.js 22, use of that function causes warnings. So here we // are replicating the same format output to ensure we don't break any // log parsing that happens in the real world. const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; -const utilLog = function (msg) { +const utilLog = function (msg, level) { const d = new Date(); const time = [ d.getHours().toString().padStart(2, '0'), d.getMinutes().toString().padStart(2, '0'), d.getSeconds().toString().padStart(2, '0') ].join(':'); - console.log(`${d.getDate()} ${months[d.getMonth()]} ${time} - ${msg}`) + console.log(chalk[levelColours[level]](`${d.getDate()} ${months[d.getMonth()]} ${time} - ${msg}`)) } var consoleLogger = function(msg) { @@ -96,7 +105,7 @@ var consoleLogger = function(msg) { utilLog("["+levelNames[msg.level]+"] "+JSON.stringify(msg)); } else { if (verbose && msg.msg && msg.msg.stack) { - utilLog("["+levelNames[msg.level]+"] "+(msg.type?"["+msg.type+":"+(msg.name||msg.id)+"] ":"")+msg.msg.stack); + utilLog("["+levelNames[msg.level]+"] "+(msg.type?"["+msg.type+":"+(msg.name||msg.id)+"] ":"")+msg.msg.stack, msg.level); } else { var message = msg.msg; try { @@ -107,7 +116,7 @@ var consoleLogger = function(msg) { message = 'Exception trying to log: '+util.inspect(message); } - utilLog("["+levelNames[msg.level]+"] "+(msg.type?"["+msg.type+":"+(msg.name||msg.id)+"] ":"")+message); + utilLog("["+levelNames[msg.level]+"] "+(msg.type?"["+msg.type+":"+(msg.name||msg.id)+"] ":"")+message, msg.level); } } } diff --git a/packages/node_modules/@node-red/util/package.json b/packages/node_modules/@node-red/util/package.json index 5bfeb6508..6c6646197 100644 --- a/packages/node_modules/@node-red/util/package.json +++ b/packages/node_modules/@node-red/util/package.json @@ -15,6 +15,7 @@ } ], "dependencies": { + "chalk": "4.1.2", "fs-extra": "11.2.0", "i18next": "21.10.0", "json-stringify-safe": "5.0.1", From 080a6af54b0e466de2a17dc6a15749c007907e37 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 15 Apr 2025 18:11:21 +0100 Subject: [PATCH 2/5] Add all the levels to the colours list --- packages/node_modules/@node-red/util/lib/log.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/util/lib/log.js b/packages/node_modules/@node-red/util/lib/log.js index 42efde4b5..d22d298b4 100644 --- a/packages/node_modules/@node-red/util/lib/log.js +++ b/packages/node_modules/@node-red/util/lib/log.js @@ -54,7 +54,9 @@ var levelColours = { 30: 'yellow', 40: 'white', 50: 'cyan', - 60: 'gray' + 60: 'gray', + 98: 'white', + 99: 'white' }; var logHandlers = []; From c9412096cac55ac09e68b1b62438af9aab402502 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 15 Apr 2025 18:15:48 +0100 Subject: [PATCH 3/5] fix package.json --- packages/node_modules/@node-red/util/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/util/package.json b/packages/node_modules/@node-red/util/package.json index 6c6646197..02c08915d 100644 --- a/packages/node_modules/@node-red/util/package.json +++ b/packages/node_modules/@node-red/util/package.json @@ -15,7 +15,7 @@ } ], "dependencies": { - "chalk": "4.1.2", + "chalk": "^4.1.2", "fs-extra": "11.2.0", "i18next": "21.10.0", "json-stringify-safe": "5.0.1", From 082afb7ebd4315e69c856350ecbbf911392112d6 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 15 Apr 2025 18:25:34 +0100 Subject: [PATCH 4/5] Add missing call --- packages/node_modules/@node-red/util/lib/log.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/util/lib/log.js b/packages/node_modules/@node-red/util/lib/log.js index d22d298b4..69bcb53ea 100644 --- a/packages/node_modules/@node-red/util/lib/log.js +++ b/packages/node_modules/@node-red/util/lib/log.js @@ -104,7 +104,7 @@ const utilLog = function (msg, level) { var consoleLogger = function(msg) { if (msg.level == log.METRIC || msg.level == log.AUDIT) { - utilLog("["+levelNames[msg.level]+"] "+JSON.stringify(msg)); + utilLog("["+levelNames[msg.level]+"] "+JSON.stringify(msg), msg.level); } else { if (verbose && msg.msg && msg.msg.stack) { utilLog("["+levelNames[msg.level]+"] "+(msg.type?"["+msg.type+":"+(msg.name||msg.id)+"] ":"")+msg.msg.stack, msg.level); From 93c55e3a1ea6c8d3c27313f4a278f4971c353d10 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Wed, 16 Apr 2025 12:40:35 +0100 Subject: [PATCH 5/5] Add guard against unknown level --- packages/node_modules/@node-red/util/lib/log.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/util/lib/log.js b/packages/node_modules/@node-red/util/lib/log.js index 69bcb53ea..14b93d5b5 100644 --- a/packages/node_modules/@node-red/util/lib/log.js +++ b/packages/node_modules/@node-red/util/lib/log.js @@ -99,7 +99,7 @@ const utilLog = function (msg, level) { d.getMinutes().toString().padStart(2, '0'), d.getSeconds().toString().padStart(2, '0') ].join(':'); - console.log(chalk[levelColours[level]](`${d.getDate()} ${months[d.getMonth()]} ${time} - ${msg}`)) + console.log(chalk[levelColours[level] || 'white'](`${d.getDate()} ${months[d.getMonth()]} ${time} - ${msg}`)) } var consoleLogger = function(msg) {