sumologic
Version:
Sync Application logs to sumo logic directly via their http API
36 lines (31 loc) • 838 B
JavaScript
/**
* A safe version of stringify which handles circular refs
*/
module.exports = function safeStringify(val) {
var visitedObjs = [];
try {
return JSON.stringify(val, handleCircularRef);
} catch (e) {
var errmsg = e.message || safeToString(e)
if (e.filename) { errmsg += ' filename: ' + e.fileName }
if (e.lineNumber) { errmsg += ' lineNumber: ' + e.lineNumber }
return "Stringify failed: '" + errmsg + "' Object: " + safeToString(val);
}
function handleCircularRef(key, value) {
if (visitedObjs.indexOf(value) !== -1) {
return '<circular>';
} else {
if (typeof(value) === 'object') {
visitedObjs.push(value);
}
return value;
}
}
}
function safeToString(obj) {
try {
return String(obj);
} catch (e) {
return "(toString failed on object)"
}
}