feat(API): Set up error tracking using Sentry (#4394)

* feat(cli): Setup error tracking using Sentry

* make error reporting available in the workflows package

* address some of the PR comments

* create a ErrorReporterProxy like LoggerProxy

* remove the `captureError` helper. use ErrorReporterProxy directly

* fix linting issues

* remove ErrorReporterProxy warnings in tests

* check for NODE_ENV === 'production' instead

* IErrorReporter -> ErrorReporter

* ErrorReporterProxy.getInstance() -> ErrorReporter

* allow capturing stacks in warnings as well

* make n8n debugging consistent with `npm start`

* IReportingOptions -> ReportingOptions

* use consistent signature for `error` and `warn`

* use Logger instead of console.log
This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2022-11-04 17:34:47 +01:00
committed by GitHub
parent 0edd4bcc87
commit 41cb0eec6e
27 changed files with 15097 additions and 8015 deletions

View File

@@ -32,6 +32,7 @@ import {
IWorkflowExecuteHooks,
IWorkflowHooksOptionalParameters,
IWorkflowSettings,
ErrorReporterProxy as ErrorReporter,
LoggerProxy as Logger,
SubworkflowOperationError,
Workflow,
@@ -162,7 +163,8 @@ export function executeErrorWorkflow(
user,
);
})
.catch((error) => {
.catch((error: Error) => {
ErrorReporter.error(error);
Logger.error(
`Could not execute ErrorWorkflow for execution ID ${this.executionId} because of error querying the workflow owner`,
{
@@ -219,8 +221,9 @@ function pruneExecutionData(this: WorkflowHooks): void {
}, timeout * 1000),
)
.catch((error) => {
throttling = false;
ErrorReporter.error(error);
throttling = false;
Logger.error(
`Failed pruning execution data from database for execution ID ${this.executionId} (hookFunctionsSave)`,
{
@@ -451,6 +454,7 @@ export function hookFunctionsPreExecute(parentProcessMode?: string): IWorkflowEx
flattenedExecutionData as IExecutionFlattedDb,
);
} catch (err) {
ErrorReporter.error(err);
// TODO: Improve in the future!
// Errors here might happen because of database access
// For busy machines, we may get "Database is locked" errors.
@@ -511,6 +515,7 @@ function hookFunctionsSave(parentProcessMode?: string): IWorkflowExecuteHooks {
newStaticData,
);
} catch (e) {
ErrorReporter.error(e);
Logger.error(
`There was a problem saving the workflow with id "${this.workflowData.id}" to save changed staticData: "${e.message}" (hookFunctionsSave)`,
{ executionId: this.executionId, workflowId: this.workflowData.id },
@@ -629,6 +634,7 @@ function hookFunctionsSave(parentProcessMode?: string): IWorkflowExecuteHooks {
);
}
} catch (error) {
ErrorReporter.error(error);
Logger.error(`Failed saving execution data to DB on execution ID ${this.executionId}`, {
executionId: this.executionId,
workflowId: this.workflowData.id,
@@ -676,6 +682,7 @@ function hookFunctionsSaveWorker(): IWorkflowExecuteHooks {
newStaticData,
);
} catch (e) {
ErrorReporter.error(e);
Logger.error(
`There was a problem saving the workflow with id "${this.workflowData.id}" to save changed staticData: "${e.message}" (workflowExecuteAfter)`,
{ sessionId: this.sessionId, workflowId: this.workflowData.id },