Skip to content

Commit 69aa0bd

Browse files
authored
chore: Improve incoming webhook logging & add middleware (RocketChat#37948)
1 parent 719b85a commit 69aa0bd

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

apps/meteor/app/integrations/server/api/api.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ import { APIClass } from '../../../api/server/ApiClass';
1414
import type { RateLimiterOptions } from '../../../api/server/api';
1515
import { API, defaultRateLimiterOptions } from '../../../api/server/api';
1616
import type { FailureResult, GenericRouteExecutionContext, SuccessResult, UnavailableResult } from '../../../api/server/definition';
17+
import { loggerMiddleware } from '../../../api/server/middlewares/logger';
18+
import { metricsMiddleware } from '../../../api/server/middlewares/metrics';
19+
import { tracerSpanMiddleware } from '../../../api/server/middlewares/tracer';
1720
import type { WebhookResponseItem } from '../../../lib/server/functions/processWebhookMessage';
1821
import { processWebhookMessage } from '../../../lib/server/functions/processWebhookMessage';
22+
import { metrics } from '../../../metrics/server';
1923
import { settings } from '../../../settings/server';
2024
import { IsolatedVMScriptEngine } from '../lib/isolated-vm/isolated-vm';
21-
import { incomingLogger } from '../logger';
25+
import { incomingLogger, integrationLogger } from '../logger';
2226
import { addOutgoingIntegration } from '../methods/outgoing/addOutgoingIntegration';
2327
import { deleteOutgoingIntegration } from '../methods/outgoing/deleteOutgoingIntegration';
2428

@@ -247,8 +251,9 @@ async function executeIntegrationRest(
247251
return API.v1.success({ responses: messageResponse });
248252
}
249253
return API.v1.success();
250-
} catch ({ error, message }: any) {
251-
return API.v1.failure(error || message);
254+
} catch (err: any) {
255+
incomingLogger.error({ msg: 'Error processing webhook message', err });
256+
return API.v1.failure(err?.error || err?.message || 'Unknown error');
252257
}
253258
}
254259

@@ -378,6 +383,11 @@ const Api = new WebHookAPI({
378383
prettyJson: process.env.NODE_ENV === 'development',
379384
});
380385

386+
Api.router
387+
.use(loggerMiddleware(integrationLogger))
388+
.use(metricsMiddleware({ basePathRegex: new RegExp(/^\/hooks\//), api: Api, settings, summary: metrics.rocketchatRestApi }))
389+
.use(tracerSpanMiddleware);
390+
381391
const middleware = async (c: Context, next: Next): Promise<void> => {
382392
const { req } = c;
383393
if (req.raw.headers.get('content-type') !== 'application/x-www-form-urlencoded') {
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Logger } from '@rocket.chat/logger';
22

3-
const logger = new Logger('Integrations');
3+
export const integrationLogger = new Logger('Integrations');
44

5-
export const incomingLogger = logger.section('Incoming WebHook');
6-
export const outgoingLogger = logger.section('Outgoing WebHook');
5+
export const incomingLogger = integrationLogger.section('Incoming WebHook');
6+
export const outgoingLogger = integrationLogger.section('Outgoing WebHook');

0 commit comments

Comments
 (0)