框架
框架集成
为 Nuxt、Next.js、SvelteKit、Hono、Express 或其他列出的框架选择 evlog 集成。按照其设置和请求日志器访问指南操作。
从下表中选择你的框架。log.set()、createError() 和 parseError() 使用相同的核心 API,而初始化和请求日志器访问取决于具体集成。一些技术栈提供模块或中间件,其他技术栈则需要按照其指南中的手动设置进行配置。
没有 HTTP 框架?对于脚本、库和 worker,请使用 Standalone TypeScript;在边缘环境中请使用 Cloudflare Workers。
选择你的框架
| 框架 | 导入 | 类型 | 日志器访问 | 状态 |
|---|---|---|---|---|
| Nuxt | evlog/nuxt | 模块 | useLogger(event) | 稳定 |
| Next.js | evlog/next | 工厂 | useLogger() | 稳定 |
| SvelteKit | evlog/sveltekit | 钩子 | event.locals.log / useLogger() | 稳定 |
| Nitro | evlog/nitro | 模块 | useLogger(event) | 稳定 |
| TanStack Start | evlog/nitro/v3 | 模块 | useRequest().context.log | 稳定 |
| TanStack Router | evlog/nitro/v3 | 模块 | 通过 TanStack Start(使用 Nitro v3) | 稳定 |
| React Router | evlog/react-router | 中间件 | context.get(loggerContext) / useLogger() | 稳定 |
| NestJS | evlog/nestjs | 模块 | useLogger() | 稳定 |
| Express | evlog/express | 中间件 | req.log / useLogger() | 稳定 |
| Hono | evlog/hono | 中间件 | c.get('log') / useLogger() | 稳定 |
| Fastify | evlog/fastify | 插件 | request.log / useLogger() | 稳定 |
| Elysia | evlog/elysia | 插件 | log(上下文)/ useLogger() | 稳定 |
| oRPC | evlog/orpc | 处理器包装器 + 中间件 | context.log / useLogger() | 稳定 |
| Cloudflare Workers | evlog/workers | 工厂 | createWorkersLogger() | 稳定 |
| AWS Lambda | evlog | 手动 | createLogger() / createRequestLogger() | 指南 |
| Standalone | evlog | 手动 | createLogger() / createRequestLogger() | 稳定 |
| Astro | evlog | 手动 | createRequestLogger() | 指南 |
| Custom | evlog/toolkit | 自行构建 | createMiddlewareLogger() | Beta |
不同框架之间的差异
每个框架有两点不同:如何启动 evlog,以及处理器如何获取请求日志器。
启动 evlog
| 模式 | 框架 |
|---|---|
evlog(options) 中间件 / 插件 | Hono、Express、Fastify、Elysia、SvelteKit、React Router |
createEvlog(options) 工厂 | Next.js |
EvlogModule.forRoot() | NestJS |
| 模块默认导出 | Nuxt、Nitro v2/v3 |
| 手动工厂 | Cloudflare Workers(createWorkersLogger)、Standalone、AWS Lambda、Astro |
从处理器中获取日志器
| 模式 | 框架 |
|---|---|
useLogger(event) | Nuxt、Nitro |
useLogger() | Next.js、NestJS、Express、Fastify、Elysia、SvelteKit、React Router、Hono |
c.get('log') | Hono |
req.log | Express |
request.log | Fastify |
event.locals.log | SvelteKit |
context.get(loggerContext) | React Router |
createRequestLogger() / createLogger() | Standalone、Workers、手动设置 |
全栈框架
服务端框架
在构建时移除客户端日志
对于任何基于 Vite 的项目,evlog/vite 插件 都会添加构建时优化:
- 自动初始化:无需手动调用
initLogger() - 调试剥离:生产环境中自动移除
log.debug() - 源码位置:在日志调用中注入
__source: 'file:line'
它适用于 SvelteKit、通过 vite-node 使用的 Hono,以及任何由 Vite 驱动的设置。在 Nuxt 中,同样的三个选项位于 evlog/nuxt 模块中,因此无需手动添加该插件。