github.com/scaleway/scaleway-cli@v1.11.1/pkg/api/logger.go (about) 1 // Copyright (C) 2015 Scaleway. All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE.md file. 4 5 package api 6 7 import ( 8 "fmt" 9 "log" 10 "net/http" 11 "os" 12 ) 13 14 // Logger handles logging concerns for the Scaleway API SDK 15 type Logger interface { 16 LogHTTP(*http.Request) 17 Fatalf(format string, v ...interface{}) 18 Debugf(format string, v ...interface{}) 19 Infof(format string, v ...interface{}) 20 Warnf(format string, v ...interface{}) 21 } 22 23 // NewDefaultLogger returns a logger which is configured for stdout 24 func NewDefaultLogger() Logger { 25 return &defaultLogger{ 26 Logger: log.New(os.Stdout, "", log.LstdFlags), 27 } 28 } 29 30 type defaultLogger struct { 31 *log.Logger 32 } 33 34 func (l *defaultLogger) LogHTTP(r *http.Request) { 35 l.Printf("%s %s\n", r.Method, r.URL.RawPath) 36 } 37 38 func (l *defaultLogger) Fatalf(format string, v ...interface{}) { 39 l.Printf("[FATAL] %s\n", fmt.Sprintf(format, v)) 40 os.Exit(1) 41 } 42 43 func (l *defaultLogger) Debugf(format string, v ...interface{}) { 44 l.Printf("[DEBUG] %s\n", fmt.Sprintf(format, v)) 45 } 46 47 func (l *defaultLogger) Infof(format string, v ...interface{}) { 48 l.Printf("[INFO ] %s\n", fmt.Sprintf(format, v)) 49 } 50 51 func (l *defaultLogger) Warnf(format string, v ...interface{}) { 52 l.Printf("[WARN ] %s\n", fmt.Sprintf(format, v)) 53 } 54 55 type disableLogger struct { 56 } 57 58 // NewDisableLogger returns a logger which is configured to do nothing 59 func NewDisableLogger() Logger { 60 return &disableLogger{} 61 } 62 63 func (d *disableLogger) LogHTTP(r *http.Request) { 64 } 65 66 func (d *disableLogger) Fatalf(format string, v ...interface{}) { 67 panic(fmt.Sprintf(format, v)) 68 } 69 70 func (d *disableLogger) Debugf(format string, v ...interface{}) { 71 } 72 73 func (d *disableLogger) Infof(format string, v ...interface{}) { 74 } 75 76 func (d *disableLogger) Warnf(format string, v ...interface{}) { 77 }