ロガー
Fiber用のミドルウェアであり、HTTPリクエストとレスポンスに関する詳細な情報を記録します。
インターフェース
func New(config ...Config) fiber.Handler
例
Fiberウェブフレームワークのミドルウェアパッケージをインポートします:
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
注意: 登録の順序は重要です。このミドルウェアの後に登録されたルートのみがログに記録されます。そのため、このミドルウェアは最初に登録されるべきです。
Fiberアプリケーションを初期化した後、以下の方法でミドルウェアを登録することができます:
// デフォルトの構成で初期化
app.Use(logger.New())
// または、構成をカスタマイズする
// リモートIPとポートを記録
app.Use(logger.New(logger.Config{
Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))
// リクエストIDを記録
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
// より多くのオプションについては、Configセクションを参照してください
Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))
// タイムゾーンと時刻のフォーマットを変更
app.Use(logger.New(logger.Config{
Format: "${pid} ${status} - ${method} ${path}\n",
TimeFormat: "02-Jan-2006",
TimeZone: "America/New_York",
}))
// カスタムファイルライター
file, err := os.OpenFile("./123.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("ファイルを開く際にエラーが発生しました: %v", err)
}
defer file.Close()
app.Use(logger.New(logger.Config{
Output: file,
}))
// カスタムタグを追加
app.Use(logger.New(logger.Config{
CustomTags: map[string]logger.LogFunc{
"custom_tag": func(output logger.Buffer, c *fiber.Ctx, data *logger.Data, extraParam string) (int, error) {
return output.WriteString("これはカスタムタグです")
},
},
}))
// ログ出力後のコールバック関数
app.Use(logger.New(logger.Config{
TimeFormat: time.RFC3339Nano,
TimeZone: "Asia/Shanghai",
Done: func(c *fiber.Ctx, logString []byte) {
if c.Response().StatusCode() != fiber.StatusOK {
reporter.SendToSlack(logString)
}
},
}))
// デフォルトフォーマットで出力する際に色を無効にする
app.Use(logger.New(logger.Config{
DisableColors: true,
}))
構成
プロパティ | タイプ | 説明 | デフォルト値 |
---|---|---|---|
Next | func(*fiber.Ctx) bool |
Next はtrueを返すとミドルウェアをスキップする関数を定義します。 | nil |
Done | func(*fiber.Ctx, []byte) |
Done は、リクエストのログ文字列をOutputに書き込んだ後に呼び出される関数であり、ログ文字列がパラメータとして渡されます。 | nil |
CustomTags | map[string]LogFunc |
tagFunctionsはカスタムタグ操作を定義します。 | map[string]LogFunc |
Format | string |
Format はログのタグを定義します。 | [${time}] ${status} - ${latency} ${method} ${path}\n |
TimeFormat | string |
TimeFormat はログのタイムスタンプの時刻フォーマットを定義します。 | 15:04:05 |
TimeZone | string |
TimeZone は"UTC"、"America/New_York"、"Asia/Chongqing"などとして指定できます。 | "Local" |
TimeInterval | time.Duration |
TimeInterval はタイムスタンプの更新までの遅延時間です。 | 500 * time.Millisecond |
Output | io.Writer |
Output はログを書き込むためのライターです。 | os.Stdout |
DisableColors | bool |
DisableColors はログの出力時に色を無効にするかどうかを定義します。 | false |
enableColors | bool |
ログの出力時に色を有効にするための内部フィールドです。(これは設定可能なフィールドではありません) | - |
enableLatency | bool |
ログでレイテンシ測定を有効にするための内部フィールドです。(これは設定可能なフィールドではありません) | - |
timeZoneLocation | *time.Location |
タイムゾーンの位置を指定するための内部フィールドです。(これは設定可能なフィールドではありません) | - |
デフォルト設定
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Output: os.Stdout,
DisableColors: false,
}
定数
// ロガー変数
const (
TagPid = "pid" // プロセスID
TagTime = "time" // 時間
TagReferer = "referer" // リファラー
TagProtocol = "protocol" // プロトコル
TagPort = "port" // ポート
TagIP = "ip" // IPアドレス
TagIPs = "ips" // IPアドレス
TagHost = "host" // ホスト
TagMethod = "method" // リクエストメソッド
TagPath = "path" // パス
TagURL = "url" // URL
TagUA = "ua" // ユーザーエージェント
TagLatency = "latency" // 遅延
TagStatus = "status" // レスポンスステータス
TagResBody = "resBody" // レスポンスボディ
TagReqHeaders = "reqHeaders" // リクエストヘッダー
TagQueryStringParams = "queryParams" // クエリパラメーター
TagBody = "body" // リクエストボディ
TagBytesSent = "bytesSent" // 送信バイト数
TagBytesReceived = "bytesReceived" // 受信バイト数
TagRoute = "route" // ルート
TagError = "error" // エラー
// 廃止: TagReqHeaderを使用してください
TagHeader = "header:" // リクエストヘッダー
TagReqHeader = "reqHeader:" // リクエストヘッダー
TagRespHeader = "respHeader:" // レスポンスヘッダー
TagQuery = "query:" // クエリ
TagForm = "form:" // フォーム
TagCookie = "cookie:" // クッキー
TagLocals = "locals:" // ローカル変数
// 色
TagBlack = "black" // 黒
TagRed = "red" // 赤
TagGreen = "green" // 緑
TagYellow = "yellow" // 黄色
TagBlue = "blue" // 青
TagMagenta = "magenta" // マゼンタ
TagCyan = "cyan" // シアン
TagWhite = "white" // 白
TagReset = "reset" // 色をリセット
)