Arlolra has uploaded a new change for review.
https://gerrit.wikimedia.org/r/169318
Change subject: Fix stack traces
......................................................................
Fix stack traces
Change-Id: I30766199ab157a0f6168d666a32261b1758807ae
---
M lib/LogData.js
M lib/Logger.js
2 files changed, 14 insertions(+), 9 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/18/169318/1
diff --git a/lib/LogData.js b/lib/LogData.js
index a9005b8..bae2d3b 100644
--- a/lib/LogData.js
+++ b/lib/LogData.js
@@ -14,10 +14,12 @@
* @param {string} logType Type of log being generated.
* @param {object} logObject Data being logged.
*/
-var LogData = function (logType, logObject) {
+var LogData = function(logType, logObject) {
this.logType = logType;
this.logObject = logObject;
- this._error = logObject instanceof Error ? logObject : new Error();
+ if ( !(logObject instanceof Error) ) {
+ this._error = new Error();
+ }
// Cache log information if previously constructed.
this._cache = {};
@@ -57,7 +59,7 @@
return this._cache.msg;
};
-LogData.prototype._getStack = function(e) {
+LogData.prototype._getStack = function() {
// Save original Error.prepareStackTrace
var origPrepareStackTrace = Error.prepareStackTrace;
@@ -65,9 +67,7 @@
Error.prepareStackTrace = function (_, stack) { return stack; };
// Remove superfluous function calls on stack
- // (In some cases, stacks are suppressed
- // See DoesNotExistError in mediawikiApiRequest.js)
- var stack = !e.stack ? "" : 'Stack:\n ' + e.stack.slice(2).join('\n
');
+ var stack = 'Stack:\n ' + this._error.stack.slice(2).join('\n ');
// Restore original `Error.prepareStackTrace`
Error.prepareStackTrace = origPrepareStackTrace;
@@ -84,8 +84,10 @@
*/
LogData.prototype.stack = function(){
if (this._cache.stack === undefined) {
+ // (In some cases, stacks are suppressed
+ // See DoesNotExistError in mediawikiApiRequest.js)
this._cache.stack = this.flatLogObject().stack === undefined
- ? this._getStack(this._error) :
this.flatLogObject().stack;
+ ? this._getStack() : this.flatLogObject().stack;
}
return this._cache.stack;
};
@@ -115,7 +117,7 @@
* @param {String} topLevel Separate top-level from recursive calls.
*/
LogData.prototype._flatten = function(o, topLevel) {
- var f, stack, msg, longMsg,
+ var f, msg, longMsg,
self = this;
if ( typeof(o) === 'undefined' || o === null ) {
@@ -136,7 +138,7 @@
longMsg: longMsg
});
} else if (o instanceof Error) {
- f = { msg: o.message, stack: this._getStack(o) };
+ f = { msg: o.message, stack: o.stack || "" };
if ( o.code ) {
f.code = o.code;
}
diff --git a/lib/Logger.js b/lib/Logger.js
index 982cd27..5901b2b 100644
--- a/lib/Logger.js
+++ b/lib/Logger.js
@@ -41,6 +41,9 @@
// Tests whether logType matches any of the applicable logTypes
if (this._testAllRE.test(logType)) {
var logObject = Array.prototype.slice.call(arguments,
1);
+ if ( logObject.length < 2 ) {
+ logObject = logObject[0];
+ }
var logData = new LogData(logType, logObject);
// If we are already processing a log request, but a
log was generated
// while processing the first request,
processingLogRequest will be true.
--
To view, visit https://gerrit.wikimedia.org/r/169318
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I30766199ab157a0f6168d666a32261b1758807ae
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits