Handle python "underlining" nicely
Python stack traces use spaces and carets to "underline" the code causing the problem. I've now matched and processed these lines to add <u> tags. This necessitated escaping messages and displaying raw HTML which is now done by `escapeText`.
This commit is contained in:
parent
4bf473fad7
commit
4f1035cbe6
1 changed files with 24 additions and 6 deletions
|
|
@ -60,8 +60,7 @@
|
||||||
>
|
>
|
||||||
More info...
|
More info...
|
||||||
</a>
|
</a>
|
||||||
<div v-if="item.expanded" class="logging-message">
|
<div v-if="item.expanded" v-html="item.message" class="logging-message">
|
||||||
{{ item.message }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -158,7 +157,7 @@ export default {
|
||||||
timestamp: m[1],
|
timestamp: m[1],
|
||||||
level: m[2],
|
level: m[2],
|
||||||
summary: m[3],
|
summary: m[3],
|
||||||
message: m[3],
|
message: this.escapeText(m[3]),
|
||||||
sequence: logs.length,
|
sequence: logs.length,
|
||||||
expanded: false
|
expanded: false
|
||||||
});
|
});
|
||||||
|
|
@ -166,9 +165,23 @@ export default {
|
||||||
// If a line does not look like a log entry, append it to the last
|
// If a line does not look like a log entry, append it to the last
|
||||||
// log entry (i.e. allow multi-line messages)
|
// log entry (i.e. allow multi-line messages)
|
||||||
let entry = logs[logs.length - 1];
|
let entry = logs[logs.length - 1];
|
||||||
entry.message += "\n" + line;
|
m = line.match(/^( *)(\^+)/); // detect python stack trace "underlines"
|
||||||
if (entry.message.startsWith("Traceback")) {
|
if (m) {
|
||||||
entry.summary = line; // For tracebacks, the last line is the best summary
|
let linestart = entry.message.lastIndexOf('\n') + 1;
|
||||||
|
let ustart = linestart + m[1].length;
|
||||||
|
let uend = ustart + m[2].length;
|
||||||
|
entry.message = (
|
||||||
|
entry.message.substring(0, ustart)
|
||||||
|
+ "<u>"
|
||||||
|
+ entry.message.substring(ustart, uend)
|
||||||
|
+ "</u>"
|
||||||
|
+ entry.message.substring(uend)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
entry.message += "\n" + this.escapeText(line);
|
||||||
|
if (entry.message.startsWith("Traceback")) {
|
||||||
|
entry.summary = line; // For tracebacks, the last line is the best summary
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if there's no existing log message to append to, discard lines
|
// if there's no existing log message to append to, discard lines
|
||||||
|
|
@ -186,6 +199,11 @@ export default {
|
||||||
isoDateTimeString = isoDateTimeString.replace(",", ".");
|
isoDateTimeString = isoDateTimeString.replace(",", ".");
|
||||||
let date = new Date(isoDateTimeString);
|
let date = new Date(isoDateTimeString);
|
||||||
return date.toLocaleDateString() + " " + date.toLocaleTimeString();
|
return date.toLocaleDateString() + " " + date.toLocaleTimeString();
|
||||||
|
},
|
||||||
|
escapeText: function(unsafeText) {
|
||||||
|
let div = document.createElement('div');
|
||||||
|
div.innerText = unsafeText;
|
||||||
|
return div.innerHTML;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue