logger.go raw

   1  package api
   2  
   3  import (
   4  	"io"
   5  	"log"
   6  	"os"
   7  )
   8  
   9  // logger interface.
  10  type Logger interface {
  11  	Tracef(format string, args ...interface{})
  12  	Debugf(format string, args ...interface{})
  13  	Infof(format string, args ...interface{})
  14  	Errorf(format string, args ...interface{})
  15  }
  16  
  17  var _ Logger = &StdLogger{}
  18  
  19  // simple logger
  20  // change better logger as you like.
  21  type StdLogger struct {
  22  	*log.Logger
  23  	LogLevel int
  24  }
  25  
  26  func NewStdLogger(out io.Writer, prefix string, flag int, level int) *StdLogger {
  27  	if out == nil {
  28  		out = os.Stderr
  29  	}
  30  	if prefix == "" {
  31  		prefix = "dpf-client"
  32  	}
  33  	return &StdLogger{
  34  		Logger:   log.New(out, prefix, flag),
  35  		LogLevel: level,
  36  	}
  37  }
  38  
  39  func (s *StdLogger) Tracef(format string, args ...interface{}) {
  40  	if s.LogLevel <= 0 {
  41  		s.Printf(format, args...)
  42  	}
  43  }
  44  
  45  func (s *StdLogger) Debugf(format string, args ...interface{}) {
  46  	if s.LogLevel <= 1 {
  47  		s.Printf(format, args...)
  48  	}
  49  }
  50  
  51  func (s *StdLogger) Infof(format string, args ...interface{}) {
  52  	if s.LogLevel <= 2 {
  53  		s.Printf(format, args...)
  54  	}
  55  }
  56  
  57  func (s *StdLogger) Errorf(format string, args ...interface{}) {
  58  	if s.LogLevel <= 4 {
  59  		s.Printf(format, args...)
  60  	}
  61  }
  62