@@ -7,38 +7,55 @@ import (
77 "github.com/lightninglabs/loop"
88 "github.com/lightninglabs/loop/liquidity"
99 "github.com/lightninglabs/loop/loopdb"
10+ "github.com/lightningnetwork/lnd"
1011 "github.com/lightningnetwork/lnd/build"
12+ "github.com/lightningnetwork/lnd/signal"
1113)
1214
13- var (
14- logWriter = build .NewRotatingLogWriter ()
15+ const Subsystem = "LOOPD"
1516
16- log = build .NewSubLogger ("LOOPD" , logWriter .GenSubLogger )
17+ var (
18+ logWriter * build.RotatingLogWriter
19+ log btclog.Logger
20+ interceptor signal.Interceptor
1721)
1822
19- func init () {
20- setSubLogger ("LOOPD" , log , nil )
21- addSubLogger ("LOOP" , loop .UseLogger )
22- addSubLogger ("LNDC" , lndclient .UseLogger )
23- addSubLogger ("STORE" , loopdb .UseLogger )
24- addSubLogger (lsat .Subsystem , lsat .UseLogger )
25- addSubLogger (liquidity .Subsystem , liquidity .UseLogger )
26- }
23+ // SetupLoggers initializes all package-global logger variables.
24+ func SetupLoggers (root * build.RotatingLogWriter , intercept signal.Interceptor ) {
25+ genLogger := genSubLogger (root , intercept )
26+
27+ logWriter = root
28+ log = build .NewSubLogger (Subsystem , genLogger )
29+ interceptor = intercept
2730
28- // addSubLogger is a helper method to conveniently create and register the
29- // logger of a sub system.
30- func addSubLogger (subsystem string , useLogger func (btclog.Logger )) {
31- logger := build .NewSubLogger (subsystem , logWriter .GenSubLogger )
32- setSubLogger (subsystem , logger , useLogger )
31+ lnd .SetSubLogger (root , Subsystem , log )
32+ lnd .AddSubLogger (root , "LOOP" , intercept , loop .UseLogger )
33+ lnd .AddSubLogger (root , "LNDC" , intercept , lndclient .UseLogger )
34+ lnd .AddSubLogger (root , "STORE" , intercept , loopdb .UseLogger )
35+ lnd .AddSubLogger (root , lsat .Subsystem , intercept , lsat .UseLogger )
36+ lnd .AddSubLogger (
37+ root , liquidity .Subsystem , intercept , liquidity .UseLogger ,
38+ )
3339}
3440
35- // setSubLogger is a helper method to conveniently register the logger of a sub
36- // system.
37- func setSubLogger (subsystem string , logger btclog.Logger ,
38- useLogger func (btclog.Logger )) {
41+ // genSubLogger creates a logger for a subsystem. We provide an instance of
42+ // a signal.Interceptor to be able to shutdown in the case of a critical error.
43+ func genSubLogger (root * build.RotatingLogWriter ,
44+ interceptor signal.Interceptor ) func (string ) btclog.Logger {
45+
46+ // Create a shutdown function which will request shutdown from our
47+ // interceptor if it is listening.
48+ shutdown := func () {
49+ if ! interceptor .Listening () {
50+ return
51+ }
52+
53+ interceptor .RequestShutdown ()
54+ }
3955
40- logWriter .RegisterSubLogger (subsystem , logger )
41- if useLogger != nil {
42- useLogger (logger )
56+ // Return a function which will create a sublogger from our root
57+ // logger without shutdown fn.
58+ return func (tag string ) btclog.Logger {
59+ return root .GenSubLogger (tag , shutdown )
4360 }
4461}
0 commit comments