// Copyright (c) 2014-2017 The btcsuite developers // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. package rpcclient import ( "github.com/daglabs/btcd/logs" "github.com/daglabs/btcd/util/panics" ) // log is a logger that is initialized with no output filters. This // means the package will not perform any logging by default until the caller // requests it. var log logs.Logger var spawn func(func()) // The default amount of logging is none. func init() { DisableLog() } // DisableLog disables all library log output. Logging output is disabled // by default until UseLogger is called. func DisableLog() { log = logs.Disabled spawn = panics.GoroutineWrapperFunc(log, nil) } // UseLogger uses a specified Logger to output package logging info. func UseLogger(logger logs.Logger, backendLog *logs.Backend) { log = logger spawn = panics.GoroutineWrapperFunc(log, backendLog) } // LogClosure is a closure that can be printed with %s to be used to // generate expensive-to-create data for a detailed log level and avoid doing // the work if the data isn't printed. type logClosure func() string // String invokes the log closure and returns the results string. func (c logClosure) String() string { return c() } // newLogClosure returns a new closure over the passed function which allows // it to be used as a parameter in a logging function that is only invoked when // the logging level is such that the message will actually be logged. func newLogClosure(c func() string) logClosure { return logClosure(c) }