You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ElysiaJS是否存在单个生命周期钩子可在响应/错误后打印日志?

如何用单个逻辑实现Elysia的统一日志打印?

目前Elysia并没有内置能同时覆盖成功响应和错误场景的统一生命周期钩子(比如你设想的onAllRepliesAtTheEnd),但你完全不需要重复编写日志逻辑,有两种简洁的方式实现统一日志:

1. 提取共享日志函数

把日志打印逻辑抽成独立函数,分别传给onResponse和onError钩子,既保证逻辑唯一,又覆盖两种场景:

import { Elysia } from 'elysia'

// 统一日志逻辑
const logRequest = () => {
  console.log('请求处理完成(成功/错误)')
}

new Elysia()
  .onResponse(logRequest)
  .onError(logRequest)
  .get('/', () => '示例响应')
  .get('/error', () => { throw new Error('测试错误') })
  .listen(3000)

2. 封装为可复用插件

如果需要在多个Elysia实例中复用日志逻辑,可以把钩子封装成插件:

import { Elysia } from 'elysia'

// 日志插件
const requestLogger = () => 
  new Elysia({ name: 'request-logger' })
    .onResponse(() => console.log('请求响应完成'))
    .onError(() => console.log('请求处理出错'))

// 使用插件
new Elysia()
  .use(requestLogger())
  .get('/', () => '通过插件实现统一日志')
  .get('/error', () => { throw new Error('测试错误') })
  .listen(3000)

补充说明

  • 响应和错误的生命周期没有完全重合的执行环节:onResponse仅在请求成功处理后触发,onError仅在抛出错误时触发,二者是并行的分支流程。
  • 上述两种方式都能避免重复代码,实现你想要的“单个逻辑处理所有日志”的效果,无需分别编写重复的打印语句。

内容的提问来源于stack exchange,提问作者NPN328

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:25:15