Skip to content

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 函数来定制日志记录行为,从而进一步扩展中间件。

PrintFunc

Logger 中间件接受一个可选的 PrintFunc 函数作为参数。此函数允许您自定义日志记录器并添加额外的日志。

选项

可选 fn: PrintFunc(str: string, ...rest: string[])

  • str: 由 logger 传递。
  • ...rest: 要打印到控制台的其他字符串 props。

示例

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

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

app.use(logger(customLogger))

在路由中设置自定义 logger:

ts
app.post('/blog', (c) => {
  // 路由逻辑

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

  // 返回 Context
})

在 MIT 许可证下发布。