Created
May 29, 2022 17:43
-
-
Save tio-iis/5b7732f09366b010216092f1f918ecaa to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import "log" | |
func main() { | |
//---ログパッケージの使い方--- | |
//基本となるログ出力 | |
//log.Print("hello") | |
//ファイル名を出力するように設定を変更する。 | |
log.SetFlags(log.LstdFlags | log.Llongfile) | |
log.Print("hello") | |
//ログに任意の変数を指定する。 | |
//%s, %d などのverbsは変数の型によって異なる。 | |
name := "tio" | |
score := 100 | |
log.Printf("hello, name = %s, score = %d", name, score) | |
//面倒であれば %v を利用すれば良い。 | |
//log.Printf("hello, name = %v, score = %v", name, score) | |
//fmtパッケージとlogパッケージの違い | |
//文字列の出力先が標準出力かエラー出力かという違いがあるが、 | |
//fmtパッケージは画面上に文字を表示するために利用し、 | |
//logパッケージはログを出力するために利用するとおぼえておけば良い。 | |
//fmt.Print("hello") | |
//Goのlogパッケージには Fatal() が用意されている。 | |
//Fatal()とPrint()の違いはプログラムを停止するかどうかである。 | |
//Fatal()はプログラムを停止してしまうので、 | |
//「ここでエラーが発生したら、これ以上は処理できません」という場合に利 | |
用する。 | |
//バックエンドサーバ起動時のエラーハンドリングに利用されることが多い。 | |
//log.Fatal("hello, fatal") | |
//---ログレベルを意識したログ出力--- | |
//自分でログレベルを明記する必要がある。 | |
//log.Print("[Info]hello") | |
//log.Print("[Error]hello") | |
//---ログをJSONにする(構造化する)--- | |
//自動的に付与されるファイル名や時刻を非表示にする。 | |
//log.SetFlags(0) | |
//JSONに変換する構造体を用意する。 | |
//実は構造体は関数内やメソッド内に直接定義することができる。 | |
//logStruct := struct { | |
// Level string | |
// Message string | |
//}{ | |
// Level: "INFO", | |
// Message: "hello", | |
//} | |
//JSONに変換する。 | |
//logJSON, err := json.Marshal(logStruct) | |
//if err != nil { | |
// //JSONに変換できない場合、これ以上処理を進めても意味がないので、 | |
// //Fatal()で処理を止めつつ、ログを出力する。 | |
// log.Fatal(err) | |
//} | |
//log.Print(string(logJSON)) | |
//ログライブラリを利用すると、 | |
//エラーレベルやJSON変換がデフォルトで用意されている。 | |
//https://github.com/uber-go/zap | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment