improve JS error logging with additional stuff

This commit is contained in:
Andrew Dolgov 2017-03-05 10:50:15 +03:00
parent e0a957b3f6
commit 270c0a00e5
2 changed files with 19 additions and 13 deletions

View file

@ -647,14 +647,19 @@ class RPC extends Handler_Protected {
}
function log() {
$logmsg = $this->dbh->escape_string($_REQUEST['logmsg']);
$msg = $this->dbh->escape_string($_REQUEST['msg']);
$file = $this->dbh->escape_string(basename($_REQUEST['file']));
$line = (int) $_REQUEST['line'];
$context = $this->dbh->escape_string($_REQUEST['context']);
if ($logmsg) {
if ($msg) {
Logger::get()->log_error(E_USER_WARNING,
$logmsg, '[client-js]', 0, false);
}
$msg, 'client-js:' . $file, $line, $context);
echo json_encode(array("message" => "HOST_ERROR_LOGGED"));
echo json_encode(array("message" => "HOST_ERROR_LOGGED"));
} else {
echo json_encode(array("error" => "MESSAGE_NOT_FOUND"));
}
}
}

View file

@ -32,31 +32,32 @@ Array.prototype.remove = function(s) {
function report_error(message, filename, lineno, colno, error) {
exception_error(error);
exception_error(error, null, filename, lineno);
}
function exception_error(e, e_compat) {
function exception_error(e, e_compat, filename, lineno, colno) {
if (typeof e == "string") e = e_compat;
if (!e) return; // no exception object, nothing to report.
try {
console.error(e);
var msg = e.toString();
try {
new Ajax.Request("backend.php", {
parameters: {op: "rpc", method: "log", logmsg: msg},
parameters: {op: "rpc", method: "log",
file: e.fileName ? e.fileName : filename,
line: e.lineNumber ? e.lineNumber : lineno,
msg: msg, context: e.stack},
onComplete: function (transport) {
console.log(transport.responseText);
console.warn(transport.responseText);
} });
} catch (e) {
console.error("Exception while trying to log the error.", e);
}
var msg = e.toString();
console.error(msg);
var content = "<div class='fatalError'><p>" + msg + "</p>";
if (e.stack) {