github.com/brycereitano/goa@v0.0.0-20170315073847-8ffa6c85e265/logging/log15/adapter.go (about) 1 /* 2 Package goalog15 contains an adapter that makes it possible to configure goa so it uses log15 3 as logger backend. 4 Usage: 5 6 logger := log15.New() 7 // ... Initialize logger handler using log15 package 8 service.WithLogger(goalog15.New(logger)) 9 // ... Proceed with configuring and starting the goa service 10 11 // In handlers: 12 goalog15.Logger(ctx).Info("foo") 13 */ 14 package goalog15 15 16 import ( 17 "github.com/goadesign/goa" 18 "github.com/inconshreveable/log15" 19 "golang.org/x/net/context" 20 ) 21 22 // adapter is the log15 goa adapter logger. 23 type adapter struct { 24 log15.Logger 25 } 26 27 // New wraps a log15 logger into a goa logger adapter. 28 func New(logger log15.Logger) goa.LogAdapter { 29 return &adapter{Logger: logger} 30 } 31 32 // Logger returns the log15 logger stored in the given context if any, nil otherwise. 33 func Logger(ctx context.Context) log15.Logger { 34 logger := goa.ContextLogger(ctx) 35 if a, ok := logger.(*adapter); ok { 36 return a.Logger 37 } 38 return nil 39 } 40 41 // Info logs informational messages using log15. 42 func (a *adapter) Info(msg string, data ...interface{}) { 43 a.Logger.Info(msg, data...) 44 } 45 46 // Error logs error messages using log15. 47 func (a *adapter) Error(msg string, data ...interface{}) { 48 a.Logger.Error(msg, data...) 49 } 50 51 // New creates a new logger given a context. 52 func (a *adapter) New(data ...interface{}) goa.LogAdapter { 53 return &adapter{Logger: a.Logger.New(data...)} 54 }