github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/log/slog/logger.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package slog 6 7 import ( 8 "github.com/shogo82148/std/context" 9 "github.com/shogo82148/std/log" 10 ) 11 12 // SetLogLoggerLevelは、[log] パッケージへのブリッジのレベルを制御します。 13 // 14 // [SetDefault] が呼び出される前は、slogのトップレベルのログ関数はデフォルトの [log.Logger] を呼び出します。 15 // そのモードでは、SetLogLoggerLevelはそれらの呼び出しの最小レベルを設定します。 16 // デフォルトでは、最小レベルはInfoなので、[Debug] への呼び出し 17 // (およびより低いレベルでのトップレベルのログ呼び出し) 18 // はlog.Loggerに渡されません。次の呼び出し後 19 // 20 // slog.SetLogLoggerLevel(slog.LevelDebug) 21 // 22 // [Debug] への呼び出しはlog.Loggerに渡されます。 23 // 24 // [SetDefault] が呼び出された後、デフォルトの [log.Logger] への呼び出しは 25 // slogのデフォルトハンドラーに渡されます。そのモードでは、 26 // SetLogLoggerLevelはそれらの呼び出しがログに記録されるレベルを設定します。 27 // つまり、次の呼び出し後 28 // 29 // slog.SetLogLoggerLevel(slog.LevelDebug) 30 // 31 // [log.Printf]への呼び出しは、[LevelDebug] レベルでの出力を結果とします。 32 // 33 // SetLogLoggerLevelは前の値を返します。 34 func SetLogLoggerLevel(level Level) (oldLevel Level) 35 36 // Defaultは、デフォルトの [Logger] を返します。 37 func Default() *Logger 38 39 // SetDefault makes l the default [Logger], which is used by 40 // the top-level functions [Info], [Debug] and so on. 41 // After this call, output from the log package's default Logger 42 // (as with [log.Print], etc.) will be logged using l's Handler, 43 // at a level controlled by [SetLogLoggerLevel]. 44 func SetDefault(l *Logger) 45 46 // Loggerは、各Log、Debug、Info、Warn、Errorメソッドの呼び出しについて、 47 // 構造化された情報を記録します。 48 // 各呼び出しに対して、[Record] を作成し、[Handler] に渡します。 49 // 50 // 新しいLoggerを作成するには、[New]または"With"で始まるLoggerメソッドを呼び出します。 51 type Logger struct { 52 handler Handler 53 } 54 55 // Handlerは、lのHandlerを返します。 56 func (l *Logger) Handler() Handler 57 58 // Withは、各出力操作で指定された属性を含むLoggerを返します。 59 // 引数は、[Logger.Log]によって属性に変換されます。 60 func (l *Logger) With(args ...any) *Logger 61 62 // WithGroupは、nameが空でない場合、グループを開始するLoggerを返します。 63 // 追加されたすべての属性のキーは、指定された名前で修飾されます。 64 // (修飾方法は、LoggerのHandlerの[Handler.WithGroup]メソッドに依存します。) 65 // 66 // nameが空の場合、WithGroupはレシーバーを返します。 67 func (l *Logger) WithGroup(name string) *Logger 68 69 // Newは、指定された非nil Handlerを持つ新しいLoggerを作成します。 70 func New(h Handler) *Logger 71 72 // Withは、デフォルトのロガーで [Logger.With] を呼び出します。 73 func With(args ...any) *Logger 74 75 // Enabledは、lが指定されたコンテキストとレベルでログレコードを生成するかどうかを報告します。 76 func (l *Logger) Enabled(ctx context.Context, level Level) bool 77 78 // NewLogLoggerは、指定されたハンドラにRecordをディスパッチするための新しい [log.Logger] を返します。 79 // ロガーは、古いログAPIから新しい構造化ログハンドラへのブリッジとして機能します。 80 func NewLogLogger(h Handler, level Level) *log.Logger 81 82 // Logは、現在の時刻と指定されたレベルとメッセージでログレコードを生成します。 83 // RecordのAttrsは、Loggerの属性に続くAttrsで構成されます。 84 // 85 // 属性引数は、次のように処理されます。 86 // - 引数がAttrの場合、そのまま使用されます。 87 // - 引数が文字列で、これが最後の引数でない場合、 88 // 次の引数が値として扱われ、2つがAttrに結合されます。 89 // - それ以外の場合、引数はキー "!BADKEY" を持つ値として扱われます。 90 func (l *Logger) Log(ctx context.Context, level Level, msg string, args ...any) 91 92 // LogAttrsは、Attrのみを受け入れるより効率的な[Logger.Log]のバージョンです。 93 func (l *Logger) LogAttrs(ctx context.Context, level Level, msg string, attrs ...Attr) 94 95 // Debugは、[LevelDebug] でログを記録します。 96 func (l *Logger) Debug(msg string, args ...any) 97 98 // DebugContextは、指定されたコンテキストで [LevelDebug] でログを記録します。 99 func (l *Logger) DebugContext(ctx context.Context, msg string, args ...any) 100 101 // Infoは、[LevelInfo] でログを記録します。 102 func (l *Logger) Info(msg string, args ...any) 103 104 // InfoContextは、指定されたコンテキストで [LevelInfo] でログを記録します。 105 func (l *Logger) InfoContext(ctx context.Context, msg string, args ...any) 106 107 // Warnは、[LevelWarn] でログを記録します。 108 func (l *Logger) Warn(msg string, args ...any) 109 110 // WarnContextは、指定されたコンテキストで [LevelWarn] でログを記録します。 111 func (l *Logger) WarnContext(ctx context.Context, msg string, args ...any) 112 113 // Errorは、[LevelError] でログを記録します。 114 func (l *Logger) Error(msg string, args ...any) 115 116 // ErrorContextは、指定されたコンテキストで [LevelError] でログを記録します。 117 func (l *Logger) ErrorContext(ctx context.Context, msg string, args ...any) 118 119 // Debugは、デフォルトのロガーで [Logger.Debug] を呼び出します。 120 func Debug(msg string, args ...any) 121 122 // DebugContextは、デフォルトのロガーで [Logger.DebugContext] を呼び出します。 123 func DebugContext(ctx context.Context, msg string, args ...any) 124 125 // Infoは、デフォルトのロガーで [Logger.Info] を呼び出します。 126 func Info(msg string, args ...any) 127 128 // InfoContextは、デフォルトのロガーで [Logger.InfoContext] を呼び出します。 129 func InfoContext(ctx context.Context, msg string, args ...any) 130 131 // Warnは、デフォルトのロガーで [Logger.Warn] を呼び出します。 132 func Warn(msg string, args ...any) 133 134 // WarnContextは、デフォルトのロガーで [Logger.WarnContext] を呼び出します。 135 func WarnContext(ctx context.Context, msg string, args ...any) 136 137 // Errorは、デフォルトのロガーで [Logger.Error] を呼び出します。 138 func Error(msg string, args ...any) 139 140 // ErrorContextは、デフォルトのロガーで [Logger.ErrorContext] を呼び出します。 141 func ErrorContext(ctx context.Context, msg string, args ...any) 142 143 // Logは、デフォルトのロガーで [Logger.Log] を呼び出します。 144 func Log(ctx context.Context, level Level, msg string, args ...any) 145 146 // LogAttrsは、デフォルトのロガーで [Logger.LogAttrs] を呼び出します。 147 func LogAttrs(ctx context.Context, level Level, msg string, attrs ...Attr)