github.com/lbryio/lbcd@v0.22.119/rpcclient/log.go (about)

     1  // Copyright (c) 2014-2017 The btcsuite developers
     2  // Use of this source code is governed by an ISC
     3  // license that can be found in the LICENSE file.
     4  
     5  package rpcclient
     6  
     7  import (
     8  	"github.com/btcsuite/btclog"
     9  )
    10  
    11  // log is a logger that is initialized with no output filters.  This
    12  // means the package will not perform any logging by default until the caller
    13  // requests it.
    14  var log btclog.Logger
    15  
    16  // The default amount of logging is none.
    17  func init() {
    18  	DisableLog()
    19  }
    20  
    21  // DisableLog disables all library log output.  Logging output is disabled
    22  // by default until UseLogger is called.
    23  func DisableLog() {
    24  	log = btclog.Disabled
    25  }
    26  
    27  // UseLogger uses a specified Logger to output package logging info.
    28  func UseLogger(logger btclog.Logger) {
    29  	log = logger
    30  }
    31  
    32  // LogClosure is a closure that can be printed with %v to be used to
    33  // generate expensive-to-create data for a detailed log level and avoid doing
    34  // the work if the data isn't printed.
    35  type logClosure func() string
    36  
    37  // String invokes the log closure and returns the results string.
    38  func (c logClosure) String() string {
    39  	return c()
    40  }
    41  
    42  // newLogClosure returns a new closure over the passed function which allows
    43  // it to be used as a parameter in a logging function that is only invoked when
    44  // the logging level is such that the message will actually be logged.
    45  func newLogClosure(c func() string) logClosure {
    46  	return logClosure(c)
    47  }