Skip to content

Logger ミドルウェア

シンプルなロガーです。

Import

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 Middleware は、各リクエストについて以下の詳細をログに出力します:

  • Incoming Request: HTTP メソッド、リクエストパス、受信したリクエストをログに出力します。
  • Outgoing Response: HTTP メソッド、リクエストパス、レスポンスのステータスコード、リクエスト/レスポンスの時間をログに出力します。
  • Status Code Coloring: レスポンスのステータスコードは、視認性を高め、ステータスカテゴリを素早く識別できるように色分けされます。 異なるステータスコードのカテゴリは、異なる色で表現されます。
  • Elapsed Time: リクエスト/レスポンスのサイクルにかかった時間は、人間が読める形式で、ミリ秒 (ms) または秒 (s) のいずれかでログに出力されます。

Logger Middleware を使用することで、 Hono アプリケーションにおけるリクエストとレスポンスの流れを簡単に監視し、問題やパフォーマンスのボトルネックを素早く特定できます。

独自の PrintFunc 関数を提供することで、ログの挙動をカスタマイズし、ミドルウェアをさらに拡張することもできます。

TIP

status code coloring を無効にするには、 NO_COLOR 環境変数を設定します。 これは、ロギングライブラリで ANSI カラーエスケープコードを無効にする一般的な方法で、 https://no-color.org/ で説明されています。 なお、 Cloudflare Workers には process.env オブジェクトがないため、デフォルトではプレーンテキストのログ出力になります。

PrintFunc

Logger Middleware は、オプションの PrintFunc 関数をパラメータとして受け取ります。 この関数により、ロガーをカスタマイズしたり、追加のログを出力したりできます。

オプション

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

  • str: ロガーから渡されます。
  • ...rest: コンソールに出力される追加の文字列 props です。

Logger Middleware にカスタム 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
})

このドキュメントは非公式の日本語翻訳版です。
Released under the MIT License.