mirror of https://github.com/lightninglabs/loop
multi: add persistent logger
parent
0d76d6e162
commit
b574e344ea
@ -1,24 +1,40 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/btcsuite/btclog"
|
"github.com/btcsuite/btclog"
|
||||||
|
"github.com/lightninglabs/loop"
|
||||||
|
"github.com/lightninglabs/loop/lndclient"
|
||||||
|
"github.com/lightninglabs/loop/loopdb"
|
||||||
|
"github.com/lightningnetwork/lnd/build"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 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 (
|
var (
|
||||||
backendLog = btclog.NewBackend(logWriter{})
|
logWriter = build.NewRotatingLogWriter()
|
||||||
logger = backendLog.Logger("LOOPD")
|
|
||||||
|
log = build.NewSubLogger("LOOPD", logWriter.GenSubLogger)
|
||||||
)
|
)
|
||||||
|
|
||||||
// logWriter implements an io.Writer that outputs to both standard output and
|
func init() {
|
||||||
// the write-end pipe of an initialized log rotator.
|
setSubLogger("LOOPD", log, nil)
|
||||||
type logWriter struct{}
|
addSubLogger("LOOP", loop.UseLogger)
|
||||||
|
addSubLogger("LNDC", lndclient.UseLogger)
|
||||||
|
addSubLogger("STORE", loopdb.UseLogger)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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)) {
|
||||||
|
|
||||||
func (logWriter) Write(p []byte) (n int, err error) {
|
logWriter.RegisterSubLogger(subsystem, logger)
|
||||||
os.Stdout.Write(p)
|
if useLogger != nil {
|
||||||
return len(p), nil
|
useLogger(logger)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,23 @@
|
|||||||
package lndclient
|
package lndclient
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/btcsuite/btclog"
|
"github.com/btcsuite/btclog"
|
||||||
|
"github.com/lightningnetwork/lnd/build"
|
||||||
)
|
)
|
||||||
|
|
||||||
// log is a logger that is initialized with no output filters. This
|
// 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
|
// means the package will not perform any logging by default until the
|
||||||
// requests it.
|
// caller requests it.
|
||||||
var (
|
var log btclog.Logger
|
||||||
backendLog = btclog.NewBackend(logWriter{})
|
|
||||||
logger = backendLog.Logger("LNDCLIENT")
|
|
||||||
)
|
|
||||||
|
|
||||||
// logWriter implements an io.Writer that outputs to both standard output and
|
// The default amount of logging is none.
|
||||||
// the write-end pipe of an initialized log rotator.
|
func init() {
|
||||||
type logWriter struct{}
|
UseLogger(build.NewSubLogger("LNDC", nil))
|
||||||
|
}
|
||||||
|
|
||||||
func (logWriter) Write(p []byte) (n int, err error) {
|
// UseLogger uses a specified Logger to output package logging info.
|
||||||
os.Stdout.Write(p)
|
// This should be used in preference to SetLogWriter if the caller is also
|
||||||
return len(p), nil
|
// using btclog.
|
||||||
|
func UseLogger(logger btclog.Logger) {
|
||||||
|
log = logger
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,23 @@
|
|||||||
package loop
|
package loop
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/btcsuite/btclog"
|
"github.com/btcsuite/btclog"
|
||||||
|
"github.com/lightningnetwork/lnd/build"
|
||||||
)
|
)
|
||||||
|
|
||||||
// log is a logger that is initialized with no output filters. This
|
// 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
|
// means the package will not perform any logging by default until the
|
||||||
// requests it.
|
// caller requests it.
|
||||||
var (
|
var log btclog.Logger
|
||||||
backendLog = btclog.NewBackend(logWriter{})
|
|
||||||
logger = backendLog.Logger("CLIENT")
|
|
||||||
)
|
|
||||||
|
|
||||||
// logWriter implements an io.Writer that outputs to both standard output and
|
// The default amount of logging is none.
|
||||||
// the write-end pipe of an initialized log rotator.
|
func init() {
|
||||||
type logWriter struct{}
|
UseLogger(build.NewSubLogger("LOOP", nil))
|
||||||
|
}
|
||||||
|
|
||||||
func (logWriter) Write(p []byte) (n int, err error) {
|
// UseLogger uses a specified Logger to output package logging info.
|
||||||
os.Stdout.Write(p)
|
// This should be used in preference to SetLogWriter if the caller is also
|
||||||
return len(p), nil
|
// using btclog.
|
||||||
|
func UseLogger(logger btclog.Logger) {
|
||||||
|
log = logger
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,23 @@
|
|||||||
package loopdb
|
package loopdb
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/btcsuite/btclog"
|
"github.com/btcsuite/btclog"
|
||||||
|
"github.com/lightningnetwork/lnd/build"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
// log is a logger that is initialized with no output filters. This
|
||||||
backendLog = btclog.NewBackend(logWriter{})
|
// means the package will not perform any logging by default until the
|
||||||
log = backendLog.Logger("STORE")
|
// caller requests it.
|
||||||
)
|
var log btclog.Logger
|
||||||
|
|
||||||
// logWriter implements an io.Writer that outputs to both standard output and
|
// The default amount of logging is none.
|
||||||
// the write-end pipe of an initialized log rotator.
|
func init() {
|
||||||
type logWriter struct{}
|
UseLogger(build.NewSubLogger("STORE", nil))
|
||||||
|
}
|
||||||
|
|
||||||
func (logWriter) Write(p []byte) (n int, err error) {
|
// UseLogger uses a specified Logger to output package logging info.
|
||||||
os.Stdout.Write(p)
|
// This should be used in preference to SetLogWriter if the caller is also
|
||||||
return len(p), nil
|
// using btclog.
|
||||||
|
func UseLogger(logger btclog.Logger) {
|
||||||
|
log = logger
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue