GolangのLogger「zap」をStackdriverに対応させる方法




zapのログレベルをStackdriverに合わせる

zapのデフォルト設定でログを出力すると、どのログレベルでも標準エラー出力となります。

さらにStackdriverは標準エラー出力できたログはseverityをERRORとして取り込むためログレベルが合わなくなってしまいます。

この問題を解決するためには出力するログにseverityキーを追加してStackdriverのログレベルを設定してあげる必要があります。

この設定を簡単にしてくれるのがzap-stackdriverです。

インストール

go getでインストールします。

$ go get -u github.com/tommy351/zap-stackdriver

設定

config.EncoderConfigにstackdriver用のEncoderConfigを設定するだけです。これだけでzapのログレベルをStackdriverのログレベルに変換してくれます。

config := zap.NewProductionConfig()
config.EncoderConfig = stackdriver.EncoderConfig

ちなみにログレベルはこのように変換されます。

var logLevelSeverity = map[zapcore.Level]string{
	zapcore.DebugLevel:  "DEBUG",
	zapcore.InfoLevel:   "INFO",
	zapcore.WarnLevel:   "WARNING",
	zapcore.ErrorLevel:  "ERROR",
	zapcore.DPanicLevel: "CRITICAL",
	zapcore.PanicLevel:  "ALERT",
	zapcore.FatalLevel:  "EMERGENCY",
}

まとめ

zapはオリジナルの設定を読み込ませることができるのでStackdriver以外にもいろんなログ収集ツールに対応することができるのがいいですね。

設定も難しくないのでStackdriverを使うときはぜひ試してください。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です