mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 13:39:24 +08:00
37 lines
930 B
TypeScript
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 });
|
|
};
|
|
}
|