Hi,
I get my logs in journald, so having an option to omit Node-RED's own timestamps would be great.
Hi,
I get my logs in journald, so having an option to omit Node-RED's own timestamps would be great.
You can use -o cat to strip off the system metadata, so something like
journalctl -f -u nodered -o cat
$ journalctl -f -u nodered -o cat
Welcome to Node-RED
===================
3 Nov 16:40:16 - [info] Node-RED version: v5.0.9
3 Nov 16:40:16 - [info] Node.js version: v24.22.2
3 Nov 16:40:16 - [info] Linux 7.0.0-42-generic x64 LE
3 Nov 16:40:16 - [info] Loading palette nodes
Thanks, but I need to do this at the source.
Node-RED does, of course, have the ability to create custom logs, so you might want to check that out?
Indeed, thanks. I only read the settings file documentation, which didn't mention anything about custom loggers, but I took the default console logger and cleaned it up a bit. This will do, for now. Would still like to see the option.
logging: {
customLogger: {
level: "info",
metrics: false,
audit: false
handler: function(settings) {
var util = require("@node-red/util");
var verbose = settings.verbose;
var levelNames = {
10: "fatal",
20: "error",
30: "warn",
40: "info",
50: "debug",
60: "trace",
98: "audit",
99: "metric"
};
return function(msg) {
var levelName = levelNames[msg.level];
var prefix = `[${levelName}] `;
if (msg.level == util.log.METRIC || msg.level == util.log.AUDIT) {
console.log(prefix + JSON.stringify(msg));
} else {
if (msg.type) {
prefix += `[${msg.type}:${msg.name || msg.id}] `;
}
if (verbose && msg.msg?.stack) {
console.log(prefix + msg.msg.stack);
} else {
var message = msg.msg;
try {
if (typeof message === 'object' && message.message) {
message = message.message;
}
} catch(e) {
message = 'Exception trying to log: ' + util.inspect(message);
}
console.log(prefix + message);
}
}
}
}
}
},