構造化ログを使う理由
機械可読なログを記録します
「構造化ログを使う理由」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。
機械が読み取れるログ
従来のログは自由形式の文字列です。たとえば "user 42 logged in from 1.2.3.4" のようになります。人間には読みやすい一方で、機械から検索するのは困難です。構造化ロギングではキーと値のペアを出力するため、ログ集約システムで確実にフィルタリングや集計を行えます。
文字列ログの問題点
自由形式のテキストを解析する方法には、次のような問題があります。
- 時間の経過とともに形式が変化する
- 正規表現がエッジケースで壊れる
- 「userID=42 のすべてのイベント」のような検索を簡単に実行できない
構造化ログでは、すべてのフィールドが独立した検索可能な属性になります。
slogは標準ライブラリに含まれている
Go 1.21 以降、構造化ロギングは標準ライブラリの log/slog パッケージに含まれています。外部依存関係は必要ありません。
import "log/slog"最初の構造化ログ
最も簡単な呼び出しでは、メッセージとキーと値の属性を一緒に記録します。
package main
import "log/slog"
func main() {
slog.Info("user logged in", "userID", 42, "ip", "1.2.3.4")
}出力を読む
デフォルトのハンドラーは、次のような出力を生成します。
2009/11/10 23:00:00 INFO user logged in userID=42 ip=1.2.3.4
各属性は独立した key=value ペアになっているため、機械で解析できます。
組み込みのログレベル
slog には4つのレベル、Debug、Info、Warn、Error が用意されています。それぞれ、メッセージとキーと値の属性を交互に受け取ります。
slog.Warn("disk almost full", "freePct", 5)
slog.Error("db connection failed", "attempt", 3)キーと値のペア
属性は、キー、値、キー、値というように、交互に引数として渡します。奇数個の引数が余ると、特別な !BADKEY マーカー付きで記録されるため、必ずペアにしてください。
slog.Info("order placed", "orderID", 1001, "total", 49.99)本番環境ではJSON
本番環境では通常、ログ転送システム(Loki、ELK、CloudWatch)がフィールドを自動的にインデックス化できるように JSON を出力します。slog にはそのための JSON ハンドラーが用意されており、次のレッスンで説明します。
従来のlogパッケージとの比較
従来の log パッケージは文字列を出力するだけです。slog は従来と同じような使い心地を保ちながら、コードベース全体を一度に変更することなく、構造化、ログレベル、差し替え可能なハンドラーを追加できます。
構造化の効果が大きい場面
構造化ロギングは、次のような場合に特に効果を発揮します。
- 多数のサービスのログを一元化する場合
- フィールドを使ってダッシュボードやアラートを構築する場合
- ID を使ってリクエストを関連付ける必要がある場合
実行例:構造化された出力
これを実行すると、デフォルト出力に構造化された属性が表示されます。
package main
import "log/slog"
func main() {
slog.Info("request handled",
"method", "GET",
"path", "/health",
"status", 200,
"ms", 12,
)
}理解度チェック
構造化ロギングについて、理解度を確認しましょう。
まとめ
構造化ログが重要な理由を学びました。
- キーと値の属性は機械から検索できる
log/slogは標準ライブラリに含まれている(Go 1.21 以降)- 組み込みのレベルは Debug、Info、Warn、Error
- 属性はキーと値のペアを交互に渡す
次は、テキストハンドラーと JSON ハンドラーのどちらを選ぶかを学びます。
AI チューターと学ぶ Go — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 51
- レッスン
- 203
よくある質問
「構造化ログを使う理由」レッスンは無料ですか?
はい。「構造化ログを使う理由」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。
「構造化ログを使う理由」で何を学びますか?
機械可読なログを記録します ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Go Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「構造化ログを使う理由」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このGo Academyレッスンでコードを書いて実行できますか?
はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。