框架

框架集成

evlog 支持每一个主要的 TypeScript 框架。选择你的技术栈,几分钟内即可开始使用。

evlog 为每一个主要的 TypeScript 框架提供原生集成。相同的核心 API(log.set()createError()parseError())在所有环境中表现一致。唯一的区别在于设置方式。

没有 HTTP 框架?对于脚本、库和 worker,请使用 Standalone TypeScript;在边缘环境中请使用 Cloudflare Workers

概述

FrameworkImportTypeLogger AccessStatus
Nuxtevlog/nuxt模块useLogger(event)稳定
Next.jsevlog/next工厂useLogger()稳定
SvelteKitevlog/sveltekit钩子event.locals.log / useLogger()稳定
Nitroevlog/nitro模块useLogger(event)稳定
TanStack Startevlog/nitro/v3模块useRequest().context.log稳定
TanStack Routerevlog/nitro/v3模块通过 TanStack Start 使用(使用 Nitro v3)稳定
React Routerevlog/react-router中间件context.get(loggerContext) / useLogger()稳定
NestJSevlog/nestjs模块useLogger()稳定
Expressevlog/express中间件req.log / useLogger()稳定
Honoevlog/hono中间件c.get('log')稳定
Fastifyevlog/fastify插件request.log / useLogger()稳定
Elysiaevlog/elysia插件log(上下文) / useLogger()稳定
oRPCevlog/orpc处理器包装器 + 中间件context.log / useLogger()稳定
Cloudflare Workersevlog/workers工厂createWorkersLogger()稳定
AWS Lambdaevlog手动createLogger() / createRequestLogger()指南
Standaloneevlog手动createLogger() / createRequestLogger()稳定
Astroevlog手动createRequestLogger()指南
Customevlog/toolkit自行构建createMiddlewareLogger()Beta

API 速查表

每个框架有两点不同:如何引导 evlog,以及如何访问请求日志器

引导

PatternFrameworks
evlog(options) middleware / pluginHono, Express, Fastify, Elysia, SvelteKit, React Router
createEvlog(options) factoryNext.js
EvlogModule.forRoot()NestJS
Module default exportNuxt, Nitro v2/v3
Manual factoryCloudflare Workers (createWorkersLogger), Standalone, AWS Lambda, Astro

Logger access

PatternFrameworks
useLogger(event)Nuxt, Nitro
useLogger()Next.js, NestJS, Express, Fastify, Elysia, SvelteKit, React Router
c.get('log')Hono — no useLogger() export
req.logExpress
request.logFastify
event.locals.logSvelteKit
context.get(loggerContext)React Router
createRequestLogger() / createLogger()Standalone, Workers, manual setups
Hono 刻意没有 useLogger() —— 请在处理器中使用 c.get('log')。参见 Hono integration

全栈框架

Nuxt

自动导入 useLoggercreateErrorparseError。零配置。

Next.js

createEvlog() 工厂函数,配合 withEvlog() 处理器包装器和客户端提供器使用。

SvelteKit

处理函数与错误处理钩子,日志作用域绑定在 event.locals.log

Nitro

适用于 Nitro v2 和 v3 的模块,提供基于插件的排水和增强钩子。

TanStack Start

使用 Nitro v3 模块配合异步上下文,在服务器函数中实现无缝日志记录。也涵盖 TanStack Router(全栈模式)。

React Router

中间件配合 context.get(loggerContext)useLogger(),适用于加载器与服务。

NestJS

EvlogModule.forRoot() 提供全局中间件、异常过滤器与异步配置。

服务端框架

Express

中间件配合 req.log 和四参数错误处理器。

Hono

中间件配合通过 EvlogVariables 实现的类型化 c.get('log')

Fastify

插件形式提供 request.log,会遮蔽 Fastify 内置的 pino 日志器。

Hono

中间件配合通过 EvlogVariables 实现的类型化 c.get('log')

Fastify

插件形式提供 request.log,会遮蔽 Fastify 内置的 pino 日志器。

Elysia

插件形式提供 log,通过 Elysia 的 derive 注入路由上下文。

oRPC

处理器包装器 + 过程级中间件,暴露 context.log 和每个过程的 operation

Cloudflare Workers

工厂函数用于创建具有 Cloudflare 上下文的作用域日志记录器。

AWS Lambda

每个运行时执行一次 initLogger;每次调用执行 createLogger(适用于 SQS、事件、HTTP API)。

Standalone

适用于脚本、CLI 工具、队列以及任意 TypeScript 进程。

Custom Integration

使用 evlog 工具包 API 自行构建中间件。
所有框架都支持相同的功能:wide eventsstructured errorsdrain adaptersenricherssampling 以及 AI SDK integration

Vite 插件

对于任何基于 Vite 的项目,evlog/vite 插件 都会添加构建时优化:

  • 自动初始化:无需手动调用 initLogger()
  • 调试剥离:生产环境中自动移除 log.debug()
  • 源码位置:在日志调用中注入 __source: 'file:line'

适用于 SvelteKit、Hono(通过 vite-node)以及任意 Vite 驱动的配置。Nuxt 用户可通过 evlog/nuxt 模块选项获得这些功能。