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