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  }