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  }