在Node.js中,請求處理時間通常包含在日志消息中,具體格式可能因使用的日志庫和配置而異。以下是一些常見的方法來查看請求處理時間:
const start = Date.now();
// 處理請求的代碼
const end = Date.now();
const requestTime = end - start;
console.log(`Request processed in ${requestTime} ms`);
或者,如果你使用的是一個自定義的日志函數,可以在日志消息中包含處理時間:
function createLogger() {
return async (ctx, next) => {
const startTime = Date.now();
const requestLog = `[${moment().format('YYYY-MM-DD HH:mm:ss')}] Request details: ${JSON.stringify(ctx.request)}`;
if (ctx.request.body) {
requestLog += `, request body: ${JSON.stringify(ctx.request.body)}`;
}
console.log(requestLog);
const response = await next();
const endTime = Date.now();
const responseTime = endTime - startTime;
console.log(`Response processed in ${responseTime} ms`);
return response;
};
}
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] ${level}: ${message}`;
})
),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
app.use(createLogger());
app.use(router.routes()).use(router.allowedMethods());
在上面的配置中,timestamp
格式化函數會自動包含時間戳,你可以根據需要調整日志格式以包含請求處理時間。
請注意,具體的實現方法可能會根據你的應用程序架構和所選的日志庫有所不同。在生產環境中,建議使用成熟的日志管理解決方案來自動化日志的收集、分析和可視化。