Skip to content

Instantly share code, notes, and snippets.

@tio-iis
Created May 29, 2022 17:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tio-iis/5b7732f09366b010216092f1f918ecaa to your computer and use it in GitHub Desktop.
Save tio-iis/5b7732f09366b010216092f1f918ecaa to your computer and use it in GitHub Desktop.
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