mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-06-25 00:03:46 +02:00
build: Append commit hash to the main LND context
It can be disabled via the new `logging.no-commit-hash` config option.
This commit is contained in:
parent
efe08b836e
commit
755ad49440
@ -27,6 +27,7 @@ const (
|
||||
type LogConfig struct {
|
||||
Console *consoleLoggerCfg `group:"console" namespace:"console" description:"The logger writing to stdout and stderr."`
|
||||
File *FileLoggerConfig `group:"file" namespace:"file" description:"The logger writing to LND's standard log file."`
|
||||
NoCommitHash bool `long:"no-commit-hash" description:"If set, the commit-hash of the current build will not be included in log lines by default."`
|
||||
}
|
||||
|
||||
// Validate validates the LogConfig struct values.
|
||||
|
@ -6,9 +6,13 @@
|
||||
package build
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
|
||||
"github.com/btcsuite/btclog/v2"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -101,3 +105,28 @@ func Tags() []string {
|
||||
|
||||
return strings.Split(RawTags, ",")
|
||||
}
|
||||
|
||||
// WithBuildInfo derives a child context with the build information attached as
|
||||
// attributes. At the moment, this only includes the current build's commit
|
||||
// hash.
|
||||
func WithBuildInfo(ctx context.Context, cfg *LogConfig) (context.Context,
|
||||
error) {
|
||||
|
||||
if cfg.NoCommitHash {
|
||||
return ctx, nil
|
||||
}
|
||||
|
||||
// Convert the commit hash to a byte slice.
|
||||
commitHash, err := hex.DecodeString(CommitHash)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to decode commit hash: %w", err)
|
||||
}
|
||||
|
||||
// Include the first 3 bytes of the commit hash in the context as an
|
||||
// slog attribute.
|
||||
if len(commitHash) > 3 {
|
||||
commitHash = commitHash[:3]
|
||||
}
|
||||
|
||||
return btclog.WithCtx(ctx, btclog.Hex("rev", commitHash)), nil
|
||||
}
|
||||
|
13
lnd.go
13
lnd.go
@ -155,6 +155,15 @@ func Main(cfg *Config, lisCfg ListenerCfg, implCfg *ImplementationCfg,
|
||||
}
|
||||
}()
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
ctx, err := build.WithBuildInfo(ctx, cfg.LogConfig)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to add build info to context: %w",
|
||||
err)
|
||||
}
|
||||
|
||||
mkErr := func(format string, args ...interface{}) error {
|
||||
ltndLog.Errorf("Shutting down because error in main "+
|
||||
"method: "+format, args...)
|
||||
@ -188,10 +197,6 @@ func Main(cfg *Config, lisCfg ListenerCfg, implCfg *ImplementationCfg,
|
||||
strings.Title(BitcoinChainName), network,
|
||||
)
|
||||
|
||||
ctx := context.Background()
|
||||
ctx, cancel := context.WithCancel(ctx)
|
||||
defer cancel()
|
||||
|
||||
// Enable http profiling server if requested.
|
||||
if cfg.Pprof.Profile != "" {
|
||||
// Create the http handler.
|
||||
|
@ -203,6 +203,7 @@ func (cfg *BaseNodeConfig) GenArgs() []string {
|
||||
"--bitcoin.defaultchanconfs=1",
|
||||
"--accept-keysend",
|
||||
"--keep-failed-payment-attempts",
|
||||
"--logging.no-commit-hash",
|
||||
fmt.Sprintf("--db.batch-commit-interval=%v", commitInterval),
|
||||
fmt.Sprintf("--bitcoin.defaultremotedelay=%v", DefaultCSV),
|
||||
fmt.Sprintf("--rpclisten=%v", cfg.RPCAddr()),
|
||||
|
@ -994,6 +994,11 @@
|
||||
|
||||
[logging]
|
||||
|
||||
; Whether to exclude the current build's commit hash from log lines. Note that
|
||||
; the commit hash will not currently show up in all LND log lines as this new
|
||||
; feature will take a few versions to propagate through the codebase.
|
||||
; logging.no-commit-hash=false
|
||||
|
||||
; Disable logging to stdout and stderror.
|
||||
; logging.console.disable=false
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user