From ead0385edf9c050d5d7369267b546760cd2b0c5b Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 15 Apr 2025 17:52:34 +0100 Subject: [PATCH] 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",