kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

golangでのアプリケーションログを考える

golangでアプリケーションを作成中にfmt.Printfをそのままにしてしまったため、大量に修正を加えることになってしまったので、今後どうするか考えてみます。

ログの出力を制御する

まず、パラメータによる制御をいれて出力を切り替えれるようにしておきたいです。

fmtパッケージでは、出力部分の切り替えがなかったため、logパッケージへ切り替えをしました。

func main(){
    log.SetOutput(os.Stdout)
}
func main(){
    file, err := os.OpenFile("application.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0664)
    log.SetOutput(file)
}
type NoneWriter struct{}

func (c NoneWriter) Write(p []byte) (n int, err error) {
    return 0, nil
}
func main(){
    logWriter := NoneWriter{}
    log.SetOutput(logWriter)
}

log.SetOutputはio.Writerのため、Write関数を定義することでカスタマイズできます。

loggerのライブラリを探す

探す前に実装したので、ライブラリを使用してないです。参考にしてみたいloggerを載せておきます。

気になるからあとでみておこう。と思ったものです。

github.com

github.com

github.com