Skip to content

Commit

Permalink
build+sample_conf: option to print log call-site
Browse files Browse the repository at this point in the history
  • Loading branch information
ellemouton committed Oct 17, 2024
1 parent 9be0622 commit 0dbd683
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 19 deletions.
30 changes: 25 additions & 5 deletions build/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ package build

import "github.com/btcsuite/btclog/v2"

const (
callSiteOff = "off"
callSiteShort = "short"
callSiteLong = "long"
)

// LogConfig holds logging configuration options.
//
//nolint:lll
Expand All @@ -16,26 +22,40 @@ type LogConfig struct {
// DefaultLogConfig returns the default logging config options.
func DefaultLogConfig() *LogConfig {
return &LogConfig{
Console: &LoggerConfig{},
File: &LoggerConfig{},
Console: &LoggerConfig{
CallSite: callSiteOff,
},
File: &LoggerConfig{
CallSite: callSiteOff,
},
}
}

// LoggerConfig holds options for a particular logger.
//
//nolint:lll
type LoggerConfig struct {
Disable bool `long:"disable" description:"Disable this logger."`
NoTimestamps bool `long:"no-timestamps" description:"Omit timestamps from log lines."`
Disable bool `long:"disable" description:"Disable this logger."`
NoTimestamps bool `long:"no-timestamps" description:"Omit timestamps from log lines."`
CallSite string `long:"call-site" description:"Include the call-site of each log line." choice:"off" choice:"short" choice:"long"`
}

// HandlerOptions returns the set of btclog.HandlerOptions that the state of the
// config struct translates to.
func (cfg *LoggerConfig) HandlerOptions() []btclog.HandlerOption {
var opts []btclog.HandlerOption
opts := []btclog.HandlerOption{
btclog.WithCallSiteSkipDepth(7),
}
if cfg.NoTimestamps {
opts = append(opts, btclog.WithNoTimestamp())
}

switch cfg.CallSite {
case callSiteShort:
opts = append(opts, btclog.WithCallerFlags(btclog.Lshortfile))
case callSiteLong:
opts = append(opts, btclog.WithCallerFlags(btclog.Llongfile))
}

return opts
}
43 changes: 32 additions & 11 deletions build/config_dev.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ const (
faintSeq = "2"
esc = '\x1b'
csi = string(esc) + "["

callSiteOff = "off"
callSiteShort = "short"
callSiteLong = "long"
)

// LogConfig holds logging configuration options.
Expand All @@ -27,22 +31,47 @@ type LogConfig struct {
File *LoggerConfig `group:"file" namespace:"file" description:"The logger writing to LND's standard log file."`
}

// DefaultLogConfig returns the default logging config options.
func DefaultLogConfig() *LogConfig {
return &LogConfig{
Console: &consoleLoggerCfg{
LoggerConfig: LoggerConfig{
CallSite: callSiteOff,
},
},
File: &LoggerConfig{
CallSite: callSiteOff,
},
}
}

// LoggerConfig holds options for a particular logger.
//
//nolint:lll
type LoggerConfig struct {
Disable bool `long:"disable" description:"Disable this logger."`
NoTimestamps bool `long:"no-timestamps" description:"Omit timestamps from log lines."`
Disable bool `long:"disable" description:"Disable this logger."`
NoTimestamps bool `long:"no-timestamps" description:"Omit timestamps from log lines."`
CallSite string `long:"call-site" description:"Include the call-site of each log line." choice:"off" choice:"short" choice:"long"`
}

// HandlerOptions returns the set of btclog.HandlerOptions that the state of the
// config struct translates to.
func (cfg *LoggerConfig) HandlerOptions() []btclog.HandlerOption {
var opts []btclog.HandlerOption
opts := []btclog.HandlerOption{
btclog.WithCallSiteSkipDepth(7),
}

if cfg.NoTimestamps {
opts = append(opts, btclog.WithNoTimestamp())
}

switch cfg.CallSite {
case callSiteShort:
opts = append(opts, btclog.WithCallerFlags(btclog.Lshortfile))
case callSiteLong:
opts = append(opts, btclog.WithCallerFlags(btclog.Llongfile))
}

return opts
}

Expand Down Expand Up @@ -87,14 +116,6 @@ func (cfg *consoleLoggerCfg) HandlerOptions() []btclog.HandlerOption {
)
}

// DefaultLogConfig returns the default logging config options.
func DefaultLogConfig() *LogConfig {
return &LogConfig{
Console: &consoleLoggerCfg{},
File: &LoggerConfig{},
}
}

func styleString(s string, styles ...string) string {
if len(styles) == 0 {
return s
Expand Down
9 changes: 6 additions & 3 deletions docs/release-notes/release-notes-0.19.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,12 @@
written to stdout and a new `--logging.file.disable` option to disable writing
logs to the standard log file. It also adds `--logging.console.no-timestamps`
and `--logging.file.no-timestamps` which can be used to omit timestamps in
log messages for the respective loggers. Finally, the new
`--logging.console.style` option can be used under the `dev` build tag to add
styling to console logging.
log messages for the respective loggers. The new `--logging.console.call-site`
and `--logging.file.call-site` options can be used to include the call-site of
a log line. The options for this include "off" (default), "short" (source file
name and line number) and "long" (full path to source file and line number).
Finally, the new `--logging.console.style` option can be used under the `dev`
build tag to add styling to console logging.

## Breaking Changes
## Performance Improvements
Expand Down
14 changes: 14 additions & 0 deletions sample-lnd.conf
Original file line number Diff line number Diff line change
Expand Up @@ -971,12 +971,26 @@
; Don't add timestamps to logs written to stdout and stderr.
; logging.console.no-timestamps=false

; Include the log call-site in the log line written to stdout
; and stderr. Options include 'off', 'short' and 'long'.
; Default:
; logging.console.call-site=off
; Example:
; logging.console.call-site=short

; Disable logging to the standard LND log file.
; logging.file.disable=false

; Don't add timestamps to logs written to the standard LND log file.
; logging.file.no-timestamps=false

; Include the log call-site in the log line written the standard LND
; log file. Options include 'off', 'short' and 'long'.
; Default:
; logging.file.call-site=off
; Example:
; logging.file.call-site=short

[watchtower]

; Enable integrated watchtower listening on :9911 by default.
Expand Down

0 comments on commit 0dbd683

Please sign in to comment.