nocobase/packages/core/utils/src/wrap-middleware.ts
ChengLei Shao aad8fd7bab
chore: add middleware name (#5594)
* chore: middleware name

* chore: add name to middleware

* chore: logging
2024-11-06 00:29:06 +08:00

37 lines
930 B
TypeScript

export function wrapMiddlewareWithLogging(fn, logger?) {
if (process.env['LOGGER_LEVEL'] !== 'trace') {
return fn;
}
const name = fn.name || fn.toString().slice(0, 100);
return async (ctx, next) => {
const reqId = ctx.reqId;
if (!logger && !ctx.logger) {
return await fn(ctx, next);
}
if (!logger && ctx.logger) {
logger = ctx.logger;
}
logger.trace(`--> Entering middleware: ${name}`, { reqId });
const start = Date.now();
await fn(ctx, async () => {
const beforeNext = Date.now();
logger.trace(`--> Before next middleware: ${name} - ${beforeNext - start}ms`, { reqId });
await next();
const afterNext = Date.now();
logger.trace(`<-- After next middleware: ${name} - ${afterNext - beforeNext}ms`, { reqId });
});
const ms = Date.now() - start;
logger.trace(`<-- Exiting middleware: ${name} - ${ms}ms`, { reqId });
};
}