logger.go raw

   1  package logger
   2  
   3  import "os"
   4  
   5  type LogLevel int
   6  
   7  const DebugEnv = "SCW_DEBUG"
   8  
   9  const (
  10  	// LogLevelDebug indicates Debug severity.
  11  	LogLevelDebug LogLevel = iota
  12  	// LogLevelInfo indicates Info severity.
  13  	LogLevelInfo
  14  	// LogLevelWarning indicates Warning severity.
  15  	LogLevelWarning
  16  	// LogLevelError indicates Error severity.
  17  	LogLevelError
  18  )
  19  
  20  // severityName contains the string representation of each severity.
  21  var severityName = []string{
  22  	LogLevelDebug:   "DEBUG",
  23  	LogLevelInfo:    "INFO",
  24  	LogLevelWarning: "WARNING",
  25  	LogLevelError:   "ERROR",
  26  }
  27  
  28  // Logger does underlying logging work for scaleway-sdk-go.
  29  type Logger interface {
  30  	// Debugf logs to DEBUG log. Arguments are handled in the manner of fmt.Printf.
  31  	Debugf(format string, args ...any)
  32  	// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf.
  33  	Infof(format string, args ...any)
  34  	// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf.
  35  	Warningf(format string, args ...any)
  36  	// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf.
  37  	Errorf(format string, args ...any)
  38  	// ShouldLog reports whether verbosity level l is at least the requested verbose level.
  39  	ShouldLog(level LogLevel) bool
  40  }
  41  
  42  // SetLogger sets logger that is used in by the SDK.
  43  // Not mutex-protected, should be called before any scaleway-sdk-go functions.
  44  func SetLogger(l Logger) {
  45  	logger = l
  46  }
  47  
  48  // EnableDebugMode enable LogLevelDebug on the default logger.
  49  // If a custom logger was provided with SetLogger this method has no effect.
  50  func EnableDebugMode() {
  51  	DefaultLogger.Init(os.Stderr, LogLevelDebug)
  52  }
  53