31 lines
1.1 KiB
JavaScript
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;
|