@@ -2,53 +2,60 @@ package collectors
2
2
3
3
import (
4
4
"fmt"
5
- "io"
6
5
"os"
7
6
"path/filepath"
8
7
9
- "github.com/btcsuite/btclog"
10
- "github.com/jrick/logrotate/rotator"
8
+ "github.com/btcsuite/btclog/v2"
11
9
"github.com/lightningnetwork/lnd/build"
12
10
)
13
11
14
12
var (
15
- logWriter = & build.LogWriter {}
16
- backendLog = btclog .NewBackend (logWriter )
17
-
18
13
// Logger for lndmon's main process.
19
- Logger = backendLog .Logger ( "LNDMON" )
14
+ Logger btclog .Logger
20
15
21
16
// htlcLogger is a logger for lndmon's htlc collector.
22
- htlcLogger = build . NewSubLogger ( "HTLC" , backendLog . Logger )
17
+ htlcLogger btclog. Logger
23
18
24
19
// paymentLogger is a logger for lndmon's payments monitor.
25
- paymentLogger = build .NewSubLogger ("PMNT" , backendLog .Logger )
20
+ paymentLogger btclog.Logger
21
+
22
+ noOpShutdownFunc = func () {}
26
23
)
27
24
28
25
// initLogRotator initializes the logging rotator to write logs to logFile and
29
26
// create roll files in the same directory. It must be called before the
30
27
// package-global log rotator variables are used.
31
- func initLogRotator (logFile string , maxLogFileSize int , maxLogFiles int ) error {
28
+ func initLogRotator (logFile string , maxLogFileSize , maxLogFiles int ) error {
32
29
logDir , _ := filepath .Split (logFile )
33
- err := os .MkdirAll (logDir , 0700 )
34
- if err != nil {
30
+ if err := os .MkdirAll (logDir , 0700 ); err != nil {
35
31
return fmt .Errorf ("failed to create log directory: %v" , err )
36
32
}
37
33
38
- r , err := rotator .New (
39
- logFile , int64 (maxLogFileSize * 1024 ), false , maxLogFiles ,
40
- )
41
- if err != nil {
42
- return fmt .Errorf ("failed to create file rotator: %v" , err )
34
+ // Setup the rotating log writer.
35
+ logRotator := build .NewRotatingLogWriter ()
36
+ logCfg := build .DefaultLogConfig ()
37
+ logCfg .File .MaxLogFileSize = maxLogFileSize
38
+ logCfg .File .MaxLogFiles = maxLogFiles
39
+ logCfg .File .Compressor = build .Gzip // Optional: or build.Zstd
40
+
41
+ if err := logRotator .InitLogRotator (logCfg .File , logFile ); err != nil {
42
+ return fmt .Errorf ("failed to init log rotator: %w" , err )
43
43
}
44
44
45
- pr , pw := io .Pipe ()
46
- go func () {
47
- err := r .Run (pr )
48
- fmt .Println ("unable to set up logs: " , err )
49
- }()
45
+ // Create the log handlers (console + rotating file).
46
+ logHandlers := build .NewDefaultLogHandlers (logCfg , logRotator )
47
+
48
+ // Create the subsystem logger manager.
49
+ logManager := build .NewSubLoggerManager (logHandlers ... )
50
+
51
+ // Create subsystem loggers.
52
+ Logger = logManager .GenSubLogger ("LNDMON" , noOpShutdownFunc )
53
+ htlcLogger = logManager .GenSubLogger ("HTLC" , noOpShutdownFunc )
54
+ paymentLogger = logManager .GenSubLogger ("PMNT" , noOpShutdownFunc )
50
55
51
- logWriter .RotatorPipe = pw
56
+ // Set log level.
57
+ // TODO: consider making this configurable.
58
+ logManager .SetLogLevels ("info" )
52
59
53
60
return nil
54
61
}
0 commit comments