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() { 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, 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) { 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 (typeof e == "string") e = e_compat;
if (!e) return; // no exception object, nothing to report. if (!e) return; // no exception object, nothing to report.
try { try {
console.error(e);
var msg = e.toString();
try { try {
new Ajax.Request("backend.php", { 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) { onComplete: function (transport) {
console.log(transport.responseText); console.warn(transport.responseText);
} }); } });
} catch (e) { } catch (e) {
console.error("Exception while trying to log the error.", 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>"; var content = "<div class='fatalError'><p>" + msg + "</p>";
if (e.stack) { if (e.stack) {