LoginSignup
3
2

More than 3 years have passed since last update.

軽量かつ高速なロガーzapを導入する

Posted at

目的

Uberの提供するOSSのGo言語用Loggerのzapの導入と利用方法を簡単に説明する。
備忘録的に概要を記述しているだけなので、
詳細は、公式リポジトリ、user-go/zapを参照すること

インストール

zapの導入
$ go get -u go.uber.org/zap

ロガーの記述方法

サンプルコード
import (
    "go.uber.org/zap"
)
// 〜〜〜省略〜〜〜
    logger, _ := zap.NewProduction()
    defer logger.Sync()

    logger.Info("Response received.",
    zap.Time("timestamp", response.Timestamp),
    zap.String("url", response.URL),
    zap.String("method", response.Method),
    zap.Int("status_code", response.StatusCode),
    zap.Int("response_time", response.ResponseTime))

logger, _ := zap.NewProduction()でロガーを生成。
defer logger.Sync()で関数を抜ける際にログをフラッシュしてバッファに残っている
ログレコードを書き込む模様。

logger.InfoでInfoレベルでログを書き込み、他にもWarnなど一般的なログレベルを指定して出力できるようになっている。
関数の引数として、ログメッセージ(msg)を指定する。
zap.型で型を指定してログレコードに付与する各種情報を出力する。

ログの出力例
{"level":"info","ts":1569769104.776992,"caller":"client/http_client.go:38","msg":"Response received.","timestamp":1569769104.5155523,"url":"http://web.ryoma0923.work/","method":"GET","status_code":200,"response_time":260}

ログはLDJSON(Line Delimited JSON)で出力される。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2