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)