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にブロックチェーンエンジニアとして入社。
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す