mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
parent
ea43729063
commit
c801bc5e6b
@ -487,7 +487,6 @@ function log_helper(self, level, msg) {
|
|||||||
level: level,
|
level: level,
|
||||||
id: self.id,
|
id: self.id,
|
||||||
type: self.type,
|
type: self.type,
|
||||||
module: self._module,
|
|
||||||
msg: msg
|
msg: msg
|
||||||
};
|
};
|
||||||
if (self._alias) {
|
if (self._alias) {
|
||||||
@ -500,7 +499,12 @@ function log_helper(self, level, msg) {
|
|||||||
if (self.name) {
|
if (self.name) {
|
||||||
o.name = self.name;
|
o.name = self.name;
|
||||||
}
|
}
|
||||||
self._flow.log(o);
|
// See https://github.com/node-red/node-red/issues/3327
|
||||||
|
try {
|
||||||
|
self._flow.log(o);
|
||||||
|
} catch(err) {
|
||||||
|
logUnexpectedError(self, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Log an INFO level message
|
* Log an INFO level message
|
||||||
@ -580,4 +584,59 @@ Node.prototype.status = function(status) {
|
|||||||
this._flow.handleStatus(this,status);
|
this._flow.handleStatus(this,status);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function inspectObject(flow) {
|
||||||
|
try {
|
||||||
|
let properties = new Set()
|
||||||
|
let currentObj = flow
|
||||||
|
do {
|
||||||
|
if (!Object.getPrototypeOf(currentObj)) { break }
|
||||||
|
Object.getOwnPropertyNames(currentObj).map(item => properties.add(item))
|
||||||
|
} while ((currentObj = Object.getPrototypeOf(currentObj)))
|
||||||
|
let propList = [...properties.keys()].map(item => `${item}[${(typeof flow[item])[0]}]`)
|
||||||
|
propList.sort();
|
||||||
|
let result = [];
|
||||||
|
let line = "";
|
||||||
|
while (propList.length > 0) {
|
||||||
|
let prop = propList.shift()
|
||||||
|
if (line.length+prop.length > 80) {
|
||||||
|
result.push(line)
|
||||||
|
line = "";
|
||||||
|
} else {
|
||||||
|
line += " "+prop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (line.length > 0) {
|
||||||
|
result.push(line);
|
||||||
|
}
|
||||||
|
return result.join("\n ")
|
||||||
|
|
||||||
|
} catch(err) {
|
||||||
|
return "Failed to capture object properties: "+err.toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function logUnexpectedError(node, error) {
|
||||||
|
let moduleInfo = node._module?`${node._module.module}@${node._module.version}`:"undefined"
|
||||||
|
Log.error(`
|
||||||
|
********************************************************************
|
||||||
|
Unexpected Node Error
|
||||||
|
${error.stack}
|
||||||
|
Node:
|
||||||
|
Type: ${node.type}
|
||||||
|
Module: ${moduleInfo}
|
||||||
|
ID: ${node._alias||node.id}
|
||||||
|
Properties:
|
||||||
|
${inspectObject(node)}
|
||||||
|
Flow: ${node._flow?node._flow.path:'undefined'}
|
||||||
|
Type: ${node._flow?node._flow.TYPE:'undefined'}
|
||||||
|
Properties:
|
||||||
|
${node._flow?inspectObject(node._flow):'undefined'}
|
||||||
|
|
||||||
|
Please report this issue, including the information logged above:
|
||||||
|
https://github.com/node-red/node-red/issues/
|
||||||
|
********************************************************************
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = Node;
|
module.exports = Node;
|
||||||
|
Loading…
Reference in New Issue
Block a user