ファイバーログ
プログラムの動作を観察し、問題の診断、また関連するアラートの設定などにログを使用することができます。適切に構造化されたログを定義することで、検索効率が向上し、問題の処理を容易にすることができます。
Fiberは、標準出力にログを出力するデフォルトの方法を提供します。また、log.Info
、log.Errorf
、log.Warnw
などのいくつかのグローバル関数も提供します。
ログレベル
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
カスタムログ
FiberはAllLogger
インターフェースを提供し、さまざまなログライブラリに適応することができます。
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
ログの出力
注意:Fatal
レベルでのメソッド呼び出しは、ログを出力した後にプログラムの実行を中断します。注意して使用してください。異なるレベルで直接ログを出力すると、それらはデフォルトでmessageKey
に入力され、msg
に設定されます。
log.Info("こんにちは、世界!")
log.Debug("大丈夫ですか?")
log.Info("42は生命、宇宙、そしてすべての答えです")
log.Warn("我々は攻撃を受けています!")
log.Error("ヒューストン、問題が発生しています。")
log.Fatal("さようなら、そしてすべての魚のための感謝。")
log.Panic("システムがダウンしています。")
異なるレベルでログをフォーマットして出力する場合、すべてのメソッドはf
で終わります。
log.Debugf("こんにちは%s", "、少年")
log.Infof("%dは生命、宇宙、そしてすべての答えです", 233)
log.Warnf("我々は攻撃を受けています%s!", "、ボス")
log.Errorf("%s、問題が発生しています。", "マスターシフー")
log.Fatalf("さようなら、そして%sのすべての感謝。", "、バナナ")
キーと値でメッセージを出力します。キーと値がペアになっていない場合、「KEYVALS UNPAIRED」と出力されます。
log.Debugw("", "こんにちは", "少年")
log.Infow("", "数", 233)
log.Warnw("", "仕事", "ボス")
log.Errorw("", "名前", "マスターシフー")
log.Fatalw("", "果物", "バナナ")
グローバルログ
プロジェクトでシンプルなログ関数だけを使用し、いつでもグローバルに出力したい場合は、グローバルログを提供します。
import "github.com/gofiber/fiber/v2/log"
log.Info("情報")
log.Warn("警告")
上記のコードは、標準出力にデフォルトのlog.DefaultLogger
を使用します。contrib
フォルダにすでに実装されたアダプタを見つけるか、独自のLogger
を実装し、log.SetLogger
を使用してグローバルロガーを設定することもできます。
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// カスタムロガーをインジェクト
fiberlog.SetLogger(customLogger)
レベルの設定
log.SetLevel
は、このレベルよりも低いログは出力されないように設定します。デフォルトのログレコーダーはLevelTrace
です。
このメソッドは 並行性セーフではないことに注意してください。
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
出力の設定
log.SetOutput
は、ログの出力先を設定します。デフォルトでは、ロガーはコンソールにログを出力します。
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
出力先をファイルに設定します。
// test.logファイルに出力
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return
}
log.SetOutput(f)
出力先をコンソールとファイルの両方に設定します。
// test.logファイルに出力
file, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, file)
log.SetOutput(iw)
コンテキストのバインド
コンテキストを設定し、次のメソッドを使用して指定したコンテキストにバインドされた CommonLogger
インスタンスを返します。
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
注意: これはFiberフレームワークのデフォルトのロギングライブラリです。もちろん、他のよく知られているGoオープンソースのログライブラリを選択することもできます。