12.4 構造化ログを出力する
AWSであればCloudWatch Logs、Google Cloundの場合はCloud Loggingというログ管理のサービスがあります。これらのサービスではログ表示のUIを提供しており、出力されたログをフィルタリングして検索したりできます。このようなサービスを利用するにあたって、利用しやすいログ形式が 構造化ロギング です。構造化ロギングはキーと値のペアを持つことができ、分析がしやすいログ形式です。どちらのサービスもJSON形式に対応しています。
構造化ログは標準出力に出力された内容をエージェントが収集し、これらのサービスに送信しています。このような場面で使えるGoライブラリとして有名なのが、rs/zerolog
と go.uber.org/zap
です。本書では前者を取り上げます。「ライブラリがなくてもできる」と紹介しましたが、ログを整形して出力する、同一の設定で何度も出力する、といった場合には何らかのライブラリを使った方が便利です。 zerologは速度を売りにした構造化ログを出力するためのライブラリで、デフォルトでは標準出力などに出力します。このJSON作成時のパフォーマンスが高いライブラリです。標準のlog
パッケージはお手軽ですが、構造化ログを出力するには手間がかかります。
12.4.1 zerologの基本とログレベル
zerologを利用するには次のようにインポートします。rs/zerolog/log
は簡単に扱えるようにラップされたAPIで、rs/zerolog
の方が細かい設定ができる詳細なAPIになっています。
import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log" ...
Get 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.