31 lines
1.1 KiB
JavaScript

function loggingMiddleware() {
return async (ctx, next) => {
const start = Date.now();
try {
// 打印请求路径、方法和参数
console.log(`[${new Date().toISOString()}] ${ctx.method} ${ctx.url} ${JSON.stringify(ctx.request.body)}`);
// 调用下一个中间件
await next();
// 打印请求处理时间
const ms = Date.now() - start;
console.log(`[${new Date().toISOString()}] ${ctx.method} ${ctx.url} - ${ms}ms`);
// 打印请求是否成功
if (ctx.status >= 400) {
console.error(`[${new Date().toISOString()}] ${ctx.method} ${ctx.url} - Failed (${ctx.status})`);
} else {
console.log(`[${new Date().toISOString()}] ${ctx.method} ${ctx.url} - Success (${ctx.status})`);
}
} catch (error) {
// 打印错误信息
console.error(`[${new Date().toISOString()}] ${ctx.method} ${ctx.url} - Error (${error.message})`);
ctx.status = 500; // 设置状态码为 500
ctx.body = 'Internal Server Error';
}
};
}
export default loggingMiddleware;