5 changed files with 75 additions and 0 deletions
@ -0,0 +1,35 @@ |
|||
window.COREID_ERROR_LOG_URL = window.COREID_ERROR_LOG_URL || '/api/v1/log-error' |
|||
|
|||
async function logError(error) { |
|||
try { |
|||
await fetch(window.COREID_ERROR_LOG_URL, { |
|||
method: 'POST', |
|||
cache: 'no-cache', |
|||
headers: { |
|||
'Accept': 'application/json', |
|||
'Content-Type': 'application/json', |
|||
}, |
|||
body: JSON.stringify({ |
|||
full_url: window.location.href, |
|||
trace: [ |
|||
error.name + ': ' + error.message, |
|||
error.stack, |
|||
].join('\n') |
|||
}), |
|||
}) |
|||
} catch (e) {} |
|||
} |
|||
|
|||
;(function() { |
|||
var old_onerror = window.onerror |
|||
|
|||
window.onerror = function(msg, src, line, col, error) { |
|||
logError(error).then(function() { |
|||
if ( typeof old_onerror === 'function' ) { |
|||
try { |
|||
old_onerror(msg, src, line, col, error) |
|||
} catch(e) {} |
|||
} |
|||
}) |
|||
} |
|||
})() |
@ -0,0 +1,29 @@ |
|||
const { Model } = require('flitter-orm') |
|||
|
|||
class FrontEndErrorModel extends Model { |
|||
static get schema() { |
|||
return { |
|||
user_agent: String, |
|||
logged_at: { type: Date, default: () => new Date }, |
|||
user_id: String, |
|||
session_id: String, |
|||
full_url: String, |
|||
trace: String, |
|||
} |
|||
} |
|||
|
|||
static async log(request) { |
|||
const err = new this({ |
|||
user_agent: request.get('user-agent'), |
|||
user_id: request?.user?.id, |
|||
session_id: request.sessionID, |
|||
full_url: request.body.full_url, |
|||
trace: request.body.trace, |
|||
}) |
|||
|
|||
await err.save() |
|||
return err |
|||
} |
|||
} |
|||
|
|||
module.exports = exports = FrontEndErrorModel |
Loading…
Reference in new issue