From 9c3613e96db8026ba998795739a80a935692cd89 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 14 Apr 2019 02:19:59 +0900 Subject: [PATCH] Improve error handling --- src/queue/index.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/queue/index.ts b/src/queue/index.ts index 1ab59fd18..dbd95a11b 100644 --- a/src/queue/index.ts +++ b/src/queue/index.ts @@ -23,6 +23,14 @@ function initializeQueue(name: string) { }); } +function renderError(e: Error): any { + return { + stack: e.stack, + message: e.message, + name: e.name + }; +} + export const deliverQueue = initializeQueue('deliver'); export const inboxQueue = initializeQueue('inbox'); export const dbQueue = initializeQueue('db'); @@ -34,16 +42,16 @@ deliverQueue .on('waiting', (jobId) => deliverLogger.debug(`waiting id=${jobId}`)) .on('active', (job) => deliverLogger.debug(`active id=${job.id} to=${job.data.to}`)) .on('completed', (job, result) => deliverLogger.debug(`completed(${result}) id=${job.id} to=${job.data.to}`)) - .on('failed', (job, err) => deliverLogger.warn(`failed(${err}) id=${job.id} to=${job.data.to}`)) - .on('error', (error) => deliverLogger.error(`error ${error}`)) + .on('failed', (job, err) => deliverLogger.warn(`failed(${err}) id=${job.id} to=${job.data.to}`, renderError(err))) + .on('error', (error) => deliverLogger.error(`error ${error}`, renderError(error))) .on('stalled', (job) => deliverLogger.warn(`stalled id=${job.id} to=${job.data.to}`)); inboxQueue .on('waiting', (jobId) => inboxLogger.debug(`waiting id=${jobId}`)) .on('active', (job) => inboxLogger.debug(`active id=${job.id}`)) .on('completed', (job, result) => inboxLogger.debug(`completed(${result}) id=${job.id}`)) - .on('failed', (job, err) => inboxLogger.warn(`failed(${err}) id=${job.id} activity=${job.data.activity ? job.data.activity.id : 'none'}`)) - .on('error', (error) => inboxLogger.error(`error ${error}`)) + .on('failed', (job, err) => inboxLogger.warn(`failed(${err}) id=${job.id} activity=${job.data.activity ? job.data.activity.id : 'none'}`, renderError(err))) + .on('error', (error) => inboxLogger.error(`error ${error}`, renderError(error))) .on('stalled', (job) => inboxLogger.warn(`stalled id=${job.id} activity=${job.data.activity ? job.data.activity.id : 'none'}`)); export function deliver(user: ILocalUser, content: any, to: any) {