如何在Node.js/(unjs) h3/Nuxt 3中记录响应字节大小?
Nuxt 3 组合日志格式日志记录:获取响应字节大小问题
补充说明:我知道有Content-Length响应头,但在当前中间件运行时,响应头尚未设置。
我正尝试让我的Nuxt 3应用使用组合日志格式进行规范日志记录,其中一个字段是响应的字节大小。以下是我使用的中间件,但此时获取该值为时过早,且event.res对象中也找不到类似字节大小的属性。
import { CompatibilityEvent } from "h3"; import { DateTime } from 'luxon'; export default defineEventHandler((event: CompatibilityEvent) => { const ip = event.req.headers['x-forwarded-for']; const date = DateTime.now().setLocale('en-US').toFormat('[dd/LLL/yyyy:TT ZZZ]'); const method = event.req.method || '-'; const path = event.req.url || '-'; const httpVersion = event.req.httpVersion; const statusCode = event.res.statusCode || '-'; const referer = event.req.headers['referer']; const agent = event.req.headers["user-agent"]; console.log(`${ip} - - ${date} "${method} ${path} HTTP/${httpVersion}" ${statusCode} - "${referer}" "${agent}"`); })
该中间件生成的日志如下所示:
192.168.1.11 - - [17/Aug/2022:22:21:33 +0200] "GET /cv HTTP/1.1" 200 - "http://192.168.1.11:3000/cv" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
日志格式是正确的,但状态码后的短横线应该替换为响应字节大小的具体数值。
内容的提问来源于stack exchange,提问作者Morpheu5
相关产品推荐
相关产品推荐

