From 9c664f24216f952eac7e170f487f84ff76c54965 Mon Sep 17 00:00:00 2001 From: carla Date: Mon, 16 Dec 2019 10:46:18 +0200 Subject: [PATCH] recommend: add log for subsystem --- log.go | 34 +++++++++++++++++++++++++++++----- recommend/log.go | 26 ++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 recommend/log.go diff --git a/log.go b/log.go index 530c66f..d054944 100644 --- a/log.go +++ b/log.go @@ -2,20 +2,26 @@ package terminator import ( "github.com/btcsuite/btclog" + "github.com/lightninglabs/terminator/recommend" "github.com/lightningnetwork/lnd/build" ) // Subsystem defines the logging code for this subsystem. const Subsystem = "TERM" -// 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 btclog.Logger +var ( + logWriter = build.NewRotatingLogWriter() + + // 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. + log = build.NewSubLogger(Subsystem, logWriter.GenSubLogger) +) // The default amount of logging is none. func init() { - UseLogger(build.NewSubLogger(Subsystem, nil)) + setSubLogger(Subsystem, log, nil) + addSubLogger(recommend.Subsystem, recommend.UseLogger) } // UseLogger uses a specified Logger to output package logging info. @@ -24,3 +30,21 @@ func init() { func UseLogger(logger btclog.Logger) { log = logger } + +// addSubLogger is a helper method to conveniently create and register the +// logger of a sub system. +func addSubLogger(subsystem string, useLogger func(btclog.Logger)) { + logger := build.NewSubLogger(subsystem, logWriter.GenSubLogger) + setSubLogger(subsystem, logger, useLogger) +} + +// setSubLogger is a helper method to conveniently register the logger of a sub +// system. +func setSubLogger(subsystem string, logger btclog.Logger, + useLogger func(btclog.Logger)) { + + logWriter.RegisterSubLogger(subsystem, logger) + if useLogger != nil { + useLogger(logger) + } +} diff --git a/recommend/log.go b/recommend/log.go new file mode 100644 index 0000000..823bb44 --- /dev/null +++ b/recommend/log.go @@ -0,0 +1,26 @@ +package recommend + +import ( + "github.com/btcsuite/btclog" + "github.com/lightningnetwork/lnd/build" +) + +// Subsystem defines the logging code for this subsystem. +const Subsystem = "RECM" + +// 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 btclog.Logger + +// The default amount of logging is none. +func init() { + UseLogger(build.NewSubLogger(Subsystem, nil)) +} + +// UseLogger uses a specified Logger to output package logging info. +// This should be used in preference to SetLogWriter if the caller is also +// using btclog. +func UseLogger(logger btclog.Logger) { + log = logger +}