はじめに
個人開発の中で、Goのlog
パッケージを使用する機会があったので、それぞれの関数の使用用途を以下にまとめてみました。
log パッケージの主要な関数と使用用途
log.Println
- 用途: 一般的な情報メッセージをログに出力するのに使います。改行を含むメッセージを出力します。
-
例:
log.Println("This is an informational message.")
log.Printf
-
用途: フォーマットされたログメッセージを出力するのに使います。
fmt.Printf
と同様のフォーマット指定子が使えます。 -
例:
log.Printf("This is a formatted message: %s", "Hello, World!")
log.Fatal
-
用途: 重大なエラーメッセージをログに出力し、プログラムを終了するのに使います。出力後、
os.Exit(1)
が呼ばれます。 -
例:
if err != nil { log.Fatal("Fatal error occurred: ", err) }
log.Fatalf
- 用途: フォーマットされた重大なエラーメッセージをログに出力し、プログラムを終了するのに使います。
-
例:
log.Fatalf("Fatal error: %s", err)
log.Panic
-
用途: 重大なエラーメッセージをログに出力し、
panic
を引き起こします。出力後、panic
が呼ばれるので、デファーされた関数が実行されます。 -
例:
if err != nil { log.Panic("Panic occurred: ", err) }
log.Panicf
-
用途: フォーマットされた重大なエラーメッセージをログに出力し、
panic
を引き起こします。 -
例:
log.Panicf("Panic: %s", err)
log.SetPrefix
- 用途: ログメッセージに付加するプレフィックス(前置詞)を設定します。ログメッセージを識別しやすくするために使います。
-
例:
log.SetPrefix("INFO: ") log.Println("This message has a prefix.")
log.SetFlags
-
用途: ログメッセージに付加する情報(タイムスタンプ、ファイル名、行番号など)を設定します。
log.Ldate
、log.Ltime
、log.Lshortfile
などのフラグを組み合わせて使用します。 -
例:
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) log.Println("This message includes date, time, and file info.")
log.SetOutput
- 用途: ログ出力の宛先を設定します。例えば、ファイルやネットワーク先にログを記録する際に使います。
-
例:
file, err := os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) if err != nil { log.Fatal(err) } defer file.Close() log.SetOutput(file) log.Println("This message is logged to a file.")
まとめ
これらの関数を使い分けることで、状況に応じたログ出力が可能となり、アプリケーションのデバッグや運用時のトラブルシューティングがしやすくなると思います!