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