Added verbosity flag, supports log-level as well, but will remove that in future. (#722)

* changed log-level flag back to verbosity, and updated the conversion script

* supporting both verbosity and log-level, with a message to deprecat log-level

* converted verbosity to a int value
This commit is contained in:
Pratik Patil 2023-02-10 08:49:32 +05:30 committed by GitHub
parent ad936ed3fc
commit c4f33329ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 112 additions and 22 deletions

View file

@ -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"

View file

@ -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:<IP>) (default: none)

View file

@ -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

View file

@ -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)

View file

@ -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 {

View file

@ -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

View file

@ -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"`
@ -448,7 +451,8 @@ func DefaultConfig() *Config {
Chain: "mainnet",
Identity: Hostname(),
RequiredBlocks: map[string]string{},
LogLevel: "INFO",
Verbosity: 3,
LogLevel: "",
DataDir: DefaultDataDir(),
Ancient: "",
P2P: &P2PConfig{

View file

@ -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,
})

View file

@ -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

View file

@ -1,6 +1,6 @@
chain = "mainnet"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = ""

View file

@ -1,6 +1,6 @@
chain = "mainnet"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = ""

View file

@ -2,7 +2,7 @@
chain = "mainnet"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = "$BOR_DIR/keystore"

View file

@ -2,7 +2,7 @@
chain = "mainnet"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = "$BOR_DIR/keystore"

View file

@ -1,6 +1,6 @@
chain = "mumbai"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = ""

View file

@ -1,6 +1,6 @@
chain = "mumbai"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = ""

View file

@ -2,7 +2,7 @@
chain = "mumbai"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = "$BOR_DIR/keystore"

View file

@ -2,7 +2,7 @@
chain = "mumbai"
# identity = "node_name"
# log-level = "INFO"
# verbosity = 3
datadir = "/var/lib/bor/data"
# ancient = ""
# keystore = "$BOR_DIR/keystore"

View file

@ -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",
},
},
}