diff --git a/builder/files/config.toml b/builder/files/config.toml index 0f2919807f..215acc5612 100644 --- a/builder/files/config.toml +++ b/builder/files/config.toml @@ -3,8 +3,8 @@ chain = "mainnet" # chain = "mumbai" -# identity = "Pratiks-MacBook-Pro.local" -# log-level = "INFO" +# identity = "Annon-Identity" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "/var/lib/bor/keystore" diff --git a/docs/cli/bootnode.md b/docs/cli/bootnode.md index 064de39014..e4111160a0 100644 --- a/docs/cli/bootnode.md +++ b/docs/cli/bootnode.md @@ -6,7 +6,9 @@ - ```v5```: Enable UDP v5 (default: false) -- ```log-level```: Log level (trace|debug|info|warn|error|crit) (default: info) +- ```verbosity```: Logging verbosity (5=trace|4=debug|3=info|2=warn|1=error|0=crit) (default: 3) + +- ```log-level```: log level (trace|debug|info|warn|error|crit), will be deprecated soon. Use verbosity instead (default: info) - ```nat```: port mapping mechanism (any|none|upnp|pmp|extip:) (default: none) diff --git a/docs/cli/example_config.toml b/docs/cli/example_config.toml index 64ef60ae12..9ed37da92d 100644 --- a/docs/cli/example_config.toml +++ b/docs/cli/example_config.toml @@ -4,7 +4,7 @@ chain = "mainnet" # Name of the chain to sync ("mumbai", "mainnet") or path to a genesis file identity = "Annon-Identity" # Name/Identity of the node (default = OS hostname) -log-level = "INFO" # Set log level for the server +verbosity = 3 # Logging verbosity for the server (5=trace|4=debug|3=info|2=warn|1=error|0=crit) (`log-level` was replaced by `verbosity`, and thus will be deprecated soon) datadir = "var/lib/bor" # Path of the data directory to store information ancient = "" # Data directory for ancient chain segments (default = inside chaindata) keystore = "" # Path of the directory where keystores are located diff --git a/docs/cli/server.md b/docs/cli/server.md index 5bc0ff1024..49c7114781 100644 --- a/docs/cli/server.md +++ b/docs/cli/server.md @@ -8,7 +8,9 @@ The ```bor server``` command runs the Bor client. - ```identity```: Name/Identity of the node -- ```log-level```: Set log level for the server (default: INFO) +- ```verbosity```: Logging verbosity for the server (5=trace|4=debug|3=info|2=warn|1=error|0=crit), default = 3 (default: 3) + +- ```log-level```: Log level for the server (trace|debug|info|warn|error|crit), will be deprecated soon. Use verbosity instead - ```datadir```: Path of the data directory to store information @@ -34,6 +36,10 @@ The ```bor server``` command runs the Bor client. - ```bor.heimdallgRPC```: Address of Heimdall gRPC service +- ```bor.runheimdall```: Run Heimdall service as a child process (default: false) + +- ```bor.runheimdallargs```: Arguments to pass to Heimdall service + - ```ethstats```: Reporting URL of a ethstats service (nodename:secret@host:port) - ```gpo.blocks```: Number of recent blocks to check for gas prices (default: 20) diff --git a/internal/cli/bootnode.go b/internal/cli/bootnode.go index d1dc1c2fd9..e6c8b33665 100644 --- a/internal/cli/bootnode.go +++ b/internal/cli/bootnode.go @@ -14,6 +14,7 @@ import ( "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/internal/cli/flagset" + "github.com/ethereum/go-ethereum/internal/cli/server" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/enode" @@ -27,6 +28,7 @@ type BootnodeCommand struct { listenAddr string v5 bool + verbosity int logLevel string nat string nodeKey string @@ -64,10 +66,16 @@ func (b *BootnodeCommand) Flags() *flagset.Flagset { Usage: "Enable UDP v5", Value: &b.v5, }) + flags.IntFlag(&flagset.IntFlag{ + Name: "verbosity", + Default: 3, + Usage: "Logging verbosity (5=trace|4=debug|3=info|2=warn|1=error|0=crit)", + Value: &b.verbosity, + }) flags.StringFlag(&flagset.StringFlag{ Name: "log-level", Default: "info", - Usage: "Log level (trace|debug|info|warn|error|crit)", + Usage: "log level (trace|debug|info|warn|error|crit), will be deprecated soon. Use verbosity instead", Value: &b.logLevel, }) flags.StringFlag(&flagset.StringFlag{ @@ -114,7 +122,18 @@ func (b *BootnodeCommand) Run(args []string) int { glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false))) - lvl, err := log.LvlFromString(strings.ToLower(b.logLevel)) + var logInfo string + + if b.verbosity != 0 && b.logLevel != "" { + b.UI.Warn(fmt.Sprintf("Both verbosity and log-level provided, using verbosity: %v", b.verbosity)) + logInfo = server.VerbosityIntToString(b.verbosity) + } else if b.verbosity != 0 { + logInfo = server.VerbosityIntToString(b.verbosity) + } else { + logInfo = b.logLevel + } + + lvl, err := log.LvlFromString(strings.ToLower(logInfo)) if err == nil { glogger.Verbosity(lvl) } else { diff --git a/internal/cli/server/command.go b/internal/cli/server/command.go index 9dc5f2e3af..0b66859503 100644 --- a/internal/cli/server/command.go +++ b/internal/cli/server/command.go @@ -10,6 +10,7 @@ import ( "github.com/maticnetwork/heimdall/cmd/heimdalld/service" "github.com/mitchellh/cli" + "github.com/pelletier/go-toml" "github.com/ethereum/go-ethereum/log" ) @@ -90,6 +91,32 @@ func (c *Command) extractFlags(args []string) error { } } + // nolint: nestif + // check for log-level and verbosity here + if c.configFile != "" { + data, _ := toml.LoadFile(c.configFile) + if data.Has("verbosity") && data.Has("log-level") { + log.Warn("Config contains both, verbosity and log-level, log-level will be deprecated soon. Use verbosity only.", "using", data.Get("verbosity")) + } else if !data.Has("verbosity") && data.Has("log-level") { + log.Warn("Config contains log-level only, note that log-level will be deprecated soon. Use verbosity instead.", "using", data.Get("log-level")) + config.Verbosity = VerbosityStringToInt(strings.ToLower(data.Get("log-level").(string))) + } + } else { + tempFlag := 0 + for _, val := range args { + if (strings.HasPrefix(val, "-verbosity") || strings.HasPrefix(val, "--verbosity")) && config.LogLevel != "" { + tempFlag = 1 + break + } + } + if tempFlag == 1 { + log.Warn("Both, verbosity and log-level flags are provided, log-level will be deprecated soon. Use verbosity only.", "using", config.Verbosity) + } else if tempFlag == 0 && config.LogLevel != "" { + log.Warn("Only log-level flag is provided, note that log-level will be deprecated soon. Use verbosity instead.", "using", config.LogLevel) + config.Verbosity = VerbosityStringToInt(strings.ToLower(config.LogLevel)) + } + } + c.config = &config return nil diff --git a/internal/cli/server/config.go b/internal/cli/server/config.go index 52461d9306..5ce0e26d01 100644 --- a/internal/cli/server/config.go +++ b/internal/cli/server/config.go @@ -49,6 +49,9 @@ type Config struct { // RequiredBlocks is a list of required (block number, hash) pairs to accept RequiredBlocks map[string]string `hcl:"eth.requiredblocks,optional" toml:"eth.requiredblocks,optional"` + // Verbosity is the level of the logs to put out + Verbosity int `hcl:"verbosity,optional" toml:"verbosity,optional"` + // LogLevel is the level of the logs to put out LogLevel string `hcl:"log-level,optional" toml:"log-level,optional"` @@ -445,7 +448,8 @@ func DefaultConfig() *Config { Chain: "mainnet", Identity: Hostname(), RequiredBlocks: map[string]string{}, - LogLevel: "INFO", + Verbosity: 3, + LogLevel: "", DataDir: DefaultDataDir(), Ancient: "", P2P: &P2PConfig{ diff --git a/internal/cli/server/flags.go b/internal/cli/server/flags.go index e52077da97..1d6425c303 100644 --- a/internal/cli/server/flags.go +++ b/internal/cli/server/flags.go @@ -22,9 +22,15 @@ func (c *Command) Flags() *flagset.Flagset { Default: c.cliConfig.Identity, HideDefaultFromDoc: true, }) + f.IntFlag(&flagset.IntFlag{ + Name: "verbosity", + Usage: "Logging verbosity for the server (5=trace|4=debug|3=info|2=warn|1=error|0=crit), default = 3", + Value: &c.cliConfig.Verbosity, + Default: c.cliConfig.Verbosity, + }) f.StringFlag(&flagset.StringFlag{ Name: "log-level", - Usage: "Set log level for the server", + Usage: "Log level for the server (trace|debug|info|warn|error|crit), will be deprecated soon. Use verbosity instead", Value: &c.cliConfig.LogLevel, Default: c.cliConfig.LogLevel, }) diff --git a/internal/cli/server/server.go b/internal/cli/server/server.go index f0cea4de06..69ac08e993 100644 --- a/internal/cli/server/server.go +++ b/internal/cli/server/server.go @@ -68,6 +68,32 @@ func WithGRPCListener(lis net.Listener) serverOption { } } +func VerbosityIntToString(verbosity int) string { + mapIntToString := map[int]string{ + 5: "trace", + 4: "debug", + 3: "info", + 2: "warn", + 1: "error", + 0: "crit", + } + + return mapIntToString[verbosity] +} + +func VerbosityStringToInt(loglevel string) int { + mapStringToInt := map[string]int{ + "trace": 5, + "debug": 4, + "info": 3, + "warn": 2, + "error": 1, + "crit": 0, + } + + return mapStringToInt[loglevel] +} + //nolint:gocognit func NewServer(config *Config, opts ...serverOption) (*Server, error) { srv := &Server{ @@ -75,7 +101,7 @@ func NewServer(config *Config, opts ...serverOption) (*Server, error) { } // start the logger - setupLogger(config.LogLevel) + setupLogger(VerbosityIntToString(config.Verbosity)) var err error diff --git a/packaging/templates/mainnet-v1/archive/config.toml b/packaging/templates/mainnet-v1/archive/config.toml index 9eaafd3bee..387c90c7ce 100644 --- a/packaging/templates/mainnet-v1/archive/config.toml +++ b/packaging/templates/mainnet-v1/archive/config.toml @@ -1,6 +1,6 @@ chain = "mainnet" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "" diff --git a/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml b/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml index 94dd6634f0..2e712ae912 100644 --- a/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml +++ b/packaging/templates/mainnet-v1/sentry/sentry/bor/config.toml @@ -1,6 +1,6 @@ chain = "mainnet" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "" diff --git a/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml b/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml index 9c55683c96..4402250e5e 100644 --- a/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml +++ b/packaging/templates/mainnet-v1/sentry/validator/bor/config.toml @@ -2,7 +2,7 @@ chain = "mainnet" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "$BOR_DIR/keystore" diff --git a/packaging/templates/mainnet-v1/without-sentry/bor/config.toml b/packaging/templates/mainnet-v1/without-sentry/bor/config.toml index 573f1f3be8..34d712395d 100644 --- a/packaging/templates/mainnet-v1/without-sentry/bor/config.toml +++ b/packaging/templates/mainnet-v1/without-sentry/bor/config.toml @@ -2,7 +2,7 @@ chain = "mainnet" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "$BOR_DIR/keystore" diff --git a/packaging/templates/testnet-v4/archive/config.toml b/packaging/templates/testnet-v4/archive/config.toml index 1762fdf117..b6156e5482 100644 --- a/packaging/templates/testnet-v4/archive/config.toml +++ b/packaging/templates/testnet-v4/archive/config.toml @@ -1,6 +1,6 @@ chain = "mumbai" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "" diff --git a/packaging/templates/testnet-v4/sentry/sentry/bor/config.toml b/packaging/templates/testnet-v4/sentry/sentry/bor/config.toml index ae191cec2c..efad8735c7 100644 --- a/packaging/templates/testnet-v4/sentry/sentry/bor/config.toml +++ b/packaging/templates/testnet-v4/sentry/sentry/bor/config.toml @@ -1,6 +1,6 @@ chain = "mumbai" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "" diff --git a/packaging/templates/testnet-v4/sentry/validator/bor/config.toml b/packaging/templates/testnet-v4/sentry/validator/bor/config.toml index b441cc137d..adfe245511 100644 --- a/packaging/templates/testnet-v4/sentry/validator/bor/config.toml +++ b/packaging/templates/testnet-v4/sentry/validator/bor/config.toml @@ -2,7 +2,7 @@ chain = "mumbai" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "$BOR_DIR/keystore" diff --git a/packaging/templates/testnet-v4/without-sentry/bor/config.toml b/packaging/templates/testnet-v4/without-sentry/bor/config.toml index 05a254e184..9ad2a6828a 100644 --- a/packaging/templates/testnet-v4/without-sentry/bor/config.toml +++ b/packaging/templates/testnet-v4/without-sentry/bor/config.toml @@ -2,7 +2,7 @@ chain = "mumbai" # identity = "node_name" -# log-level = "INFO" +# verbosity = 3 datadir = "/var/lib/bor/data" # ancient = "" # keystore = "$BOR_DIR/keystore" diff --git a/scripts/getconfig.go b/scripts/getconfig.go index 09026a2479..0d44a84016 100644 --- a/scripts/getconfig.go +++ b/scripts/getconfig.go @@ -103,7 +103,7 @@ var flagMap = map[string][]string{ var nameTagMap = map[string]string{ "chain": "chain", "identity": "identity", - "log-level": "log-level", + "verbosity": "verbosity", "datadir": "datadir", "keystore": "keystore", "syncmode": "syncmode", @@ -215,15 +215,15 @@ var replacedFlagsMapFlagAndValue = map[string]map[string]map[string]string{ }, "verbosity": { "flag": { - "verbosity": "log-level", + "verbosity": "verbosity", }, "value": { - "0": "SILENT", + "0": "CRIT", "1": "ERROR", "2": "WARN", "3": "INFO", "4": "DEBUG", - "5": "DETAIL", + "5": "TRACE", }, }, }