Is it possible to add custom error handling / logging to my CloudCode tasks?
Yes.
- Create an error model for the task which is not synced to user devices.
- When entering a task, create an object for that model.
- When you hit an error, log the traceID of the task, the object that entered the task (or user that triggered it) into separate, searchable fields. Also log the error message itself in the body of the object.
This should give the developer or user all of the info they need, and also allow the developer to use built-in audits to track down the specific execution if errors occur.
Thanks @JasonB .
Is it possible to integrate with existing Error handling services, like rollbar or honey-badger?
Yes, An example would be if you wanted to use, e.g. Rollbar:
export async function run() {
// Your code here
const ROLLBAR = new Rollbar({
accessToken: "", // insert rollbar access token here
captureUncaught: true,
captureUnhandledRejections: true,
environment: CloudCode.task.env
});
//Setup Rollbar for cloud code events
this.on('beforeTimeout', () => {
ROLLBAR.critical(`${CloudCode.task.name} - Script timeout imminent!`, { custom: { context: this } });
});
this.on('highMemory', () => {
ROLLBAR.critical(`${CloudCode.task.name} - High memory usage!`, { custom: { context: this, memory: process.memoryUsage() } });
});
try { // try some code
const recipient = await DB.user.first();
await recipient.save();
} catch(error) { // catch errors that crop up
if(this.source !== CloudCode.EDITOR_TEST){
await ROLLBAR.error(`Cloud Code - ${CloudCode.task.name} - ${error}`, { custom: { context: this, error: error } });
}
console.error(error);
throw error;
}
}
4 Likes