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 方法、请求路径、响应状态码以及请求/响应耗时。
  • 状态码着色:不同范围的状态码会使用不同颜色,方便快速识别。
  • 耗时显示:请求-响应的耗时以可读的格式输出(毫秒或秒)。

借助 Logger 中间件,你可以更轻松地监控 Hono 应用的请求/响应流,并快速定位问题或性能瓶颈。 你还可以传入自定义的 PrintFunc 来扩展日志输出方式。

PrintFunc

Logger 中间件可以接收一个可选的 PrintFunc 参数,用于自定义日志行为或追加额外信息。

选项

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

  • str:由 Logger 中间件传入的主消息。
  • ...rest:需要一并输出到控制台的其他字符串。

示例

为 Logger 中间件提供自定义 PrintFunc

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

app.use(logger(customLogger))

在路由中使用自定义日志:

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
})

Released under the MIT License.