跳转到正文

Logger 中间件 ​

这是一个简单的日志记录器。

导入 ​

ts
import { Hono } from 'hono'
import { logger } from 'hono/logger'

用法 ​

ts
const app = new Hono()

app.use(logger())
app.get('/', (c) => c.text('Hello Hono!'))

日志内容 ​

Logger 中间件为每个请求记录以下信息:

  • 传入请求:记录 HTTP 方法、请求路径和传入请求。
  • 发出响应:记录 HTTP 方法、请求路径、响应状态码以及请求和响应时间。
  • 状态码着色:使用颜色区分响应状态码,提高可读性并快速识别状态类别。不同类别对应不同颜色。
  • 耗时:以易读的毫秒(ms)或秒(s)格式记录请求和响应周期的耗时。

使用 Logger 中间件,可以轻松监控 Hono 应用中的请求和响应流程,快速发现问题或性能瓶颈。

也可以提供自定义 PrintFunc 函数,进一步扩展中间件的日志行为。

提示

要关闭状态码着色,可以设置 NO_COLOR 环境变量。这是日志库中禁用 ANSI 颜色转义码的常见方式,详情见 https://no-color.org/。请注意,Cloudflare Workers 没有 process.env 对象,因此默认输出纯文本日志。

PrintFunc ​

Logger 中间件接收可选的 PrintFunc 函数参数,用于自定义日志记录器并添加额外日志。

选项 ​

optional fn: PrintFunc(str: string, ...rest: string[]) ​

  • str:由日志记录器传入。
  • ...rest:需要输出到控制台的其他字符串参数。

示例 ​

为 Logger 中间件设置自定义 PrintFunc 函数:

ts
export const customLogger = (message: string, ...rest: string[]) => {
  console.log(message, ...rest)
}

app.use(logger(customLogger))

在路由中设置自定义日志记录器:

ts
app.post('/blog', (c) => {
  // Routing logic

  customLogger('Blog saved:', `Path: ${blog.url},`, `ID: ${blog.id}`)
  // Output
  // <-- POST /blog
  // Blog saved: Path: /blog/example, ID: 1
  // --> POST /blog 201 93ms

  // Return Context
})

基于 MIT 许可证发布。