Skip to main content

Get full access to 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

12.4 構造化ログを出力する

AWSであればCloudWatch Logs、Google Cloundの場合はCloud Loggingというログ管理のサービスがあります。これらのサービスではログ表示のUIを提供しており、出力されたログをフィルタリングして検索したりできます。このようなサービスを利用するにあたって、利用しやすいログ形式が 構造化ロギング です。構造化ロギングはキーと値のペアを持つことができ、分析がしやすいログ形式です。どちらのサービスもJSON形式に対応しています。

構造化ログは標準出力に出力された内容をエージェントが収集し、これらのサービスに送信しています。このような場面で使えるGoライブラリとして有名なのが、rs/zerologgo.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.

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Get it now
Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

Start your free trial Become a member now