Skip to content

ishisaka/slog_sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

slog_sample

Go言語のlog/slogサンプル

log/slogについて

Go言語のlog/slogパッケージは、Go 1.21で導入された構造化ロギングのための標準ライブラリです。ログをキーと値のペアとして出力することで、人間にとっての可読性だけでなく、機械による処理や分析も容易にします。


主な特徴 📝

  • レベル付きロギング: Debug, Info, Warn, Errorといったログレベルをサポートし、出力するログの重要度を制御できます。
  • 構造化された出力: デフォルトでは、ログはキーと値のペアで構成されるテキスト形式(key=value)またはJSON形式で出力されます。これにより、ログの検索やフィルタリングが容易になります。
  • 柔軟なハンドラ: slog.Handlerインターフェースを実装することで、ログの出力形式(テキスト、JSONなど)や出力先(標準出力、ファイル、ネットワークなど)をカスタマイズできます。
  • コンテキスト対応: context.Contextと連携し、リクエストIDなどの共通情報をログに含めることが容易です。

簡単な使い方 💡

package main

import (
	"log/slog"
	"os"
)

func main() {
	// デフォルトのテキストハンドラでロガーを作成
	logger := slog.New(slog.NewTextHandler(os.Stdout, nil))

	// 情報レベルでログを出力
	logger.Info("ユーザーがログインしました", "userID", 123, "userName", "gopher")

	// エラーレベルでログを出力
	logger.Error("データベース接続に失敗しました", "error", "connection refused")
}

メリット ✨

log/slogを利用することで、ログの可読性向上、効率的なログ分析、パフォーマンスへの影響低減といったメリットが期待できます。標準パッケージであるため、外部ライブラリへの依存を減らすことも可能です。

より詳細な情報や高度な使い方については、公式ドキュメントを参照してください。

ディレクトリ構成

  • simple_sample
    • slogのシンプルな使い方
  • level
    • slogの出力レベル設定について
  • group
    • slogの出力で属性をグルーピングする方法
  • context
    • slogの出力にcontextの内容を含める場合の例
  • config_file:
    • slogの設定に設定ファイルを使用する例
  • musk
    • トークンなどのシークレットをログ出力時にマスクしたいときの処理
  • replace
    • ログレコードの置き換えの例
  • multioutput
    • ログを同時に複数の出力先に出力する例
  • custom_hundler
    • 複数先へのログ出力することを例にしたカスタムハンドラの例

参考

About

Go言語のlog/slogの利用サンプル

Resources

License

Stars

Watchers

Forks

Contributors

Languages