@@ -7,38 +7,55 @@ import (
7
7
"github.com/lightninglabs/loop"
8
8
"github.com/lightninglabs/loop/liquidity"
9
9
"github.com/lightninglabs/loop/loopdb"
10
+ "github.com/lightningnetwork/lnd"
10
11
"github.com/lightningnetwork/lnd/build"
12
+ "github.com/lightningnetwork/lnd/signal"
11
13
)
12
14
13
- var (
14
- logWriter = build .NewRotatingLogWriter ()
15
+ const Subsystem = "LOOPD"
15
16
16
- log = build .NewSubLogger ("LOOPD" , logWriter .GenSubLogger )
17
+ var (
18
+ logWriter * build.RotatingLogWriter
19
+ log btclog.Logger
20
+ interceptor signal.Interceptor
17
21
)
18
22
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
27
30
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
+ )
33
39
}
34
40
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
+ }
39
55
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 )
43
60
}
44
61
}
0 commit comments