diff --git a/cmd/basecoin/commands/root.go b/cmd/basecoin/commands/root.go index ff70f1980..bdcc25d72 100644 --- a/cmd/basecoin/commands/root.go +++ b/cmd/basecoin/commands/root.go @@ -3,9 +3,39 @@ package commands import ( "os" + "github.com/spf13/cobra" + "github.com/spf13/viper" + + "github.com/tendermint/tmlibs/cli" + tmflags "github.com/tendermint/tmlibs/cli/flags" "github.com/tendermint/tmlibs/log" ) +const ( + defaultLogLevel = "error" + FlagLogLevel = "log_level" +) + var ( logger = log.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "main") ) + +var RootCmd = &cobra.Command{ + Use: "basecoin", + Short: "A cryptocurrency framework in Golang based on Tendermint-Core", + PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) { + level := viper.GetString(FlagLogLevel) + logger, err = tmflags.ParseLogLevel(level, logger, defaultLogLevel) + if err != nil { + return err + } + if viper.GetBool(cli.TraceFlag) { + logger = log.NewTracingLogger(logger) + } + return nil + }, +} + +func init() { + RootCmd.PersistentFlags().String(FlagLogLevel, defaultLogLevel, "Log level") +} diff --git a/cmd/basecoin/commands/start.go b/cmd/basecoin/commands/start.go index 1bcca1b15..554a99c1d 100644 --- a/cmd/basecoin/commands/start.go +++ b/cmd/basecoin/commands/start.go @@ -12,11 +12,9 @@ import ( "github.com/tendermint/abci/server" eyes "github.com/tendermint/merkleeyes/client" "github.com/tendermint/tmlibs/cli" - cliflags "github.com/tendermint/tmlibs/cli/flags" cmn "github.com/tendermint/tmlibs/common" tcmd "github.com/tendermint/tendermint/cmd/tendermint/commands" - "github.com/tendermint/tendermint/config" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/proxy" "github.com/tendermint/tendermint/types" @@ -127,14 +125,9 @@ func startTendermint(dir string, basecoinApp *app.Basecoin) error { return err } - tmLogger, err := cliflags.ParseLogLevel(cfg.LogLevel, logger, config.DefaultConfig().LogLevel) - if err != nil { - return err - } - // Create & start tendermint node - privValidator := types.LoadOrGenPrivValidator(cfg.PrivValidatorFile(), tmLogger) - n := node.NewNode(cfg, privValidator, proxy.NewLocalClientCreator(basecoinApp), tmLogger.With("module", "node")) + privValidator := types.LoadOrGenPrivValidator(cfg.PrivValidatorFile(), logger) + n := node.NewNode(cfg, privValidator, proxy.NewLocalClientCreator(basecoinApp), logger.With("module", "node")) _, err = n.Start() if err != nil { diff --git a/cmd/basecoin/main.go b/cmd/basecoin/main.go index 23c46c768..a0ce5a263 100644 --- a/cmd/basecoin/main.go +++ b/cmd/basecoin/main.go @@ -3,19 +3,14 @@ package main import ( "os" - "github.com/spf13/cobra" - "github.com/tendermint/basecoin/cmd/basecoin/commands" "github.com/tendermint/tmlibs/cli" ) func main() { - var RootCmd = &cobra.Command{ - Use: "basecoin", - Short: "A cryptocurrency framework in Golang based on Tendermint-Core", - } + rt := commands.RootCmd - RootCmd.AddCommand( + rt.AddCommand( commands.InitCmd, commands.StartCmd, commands.RelayCmd, @@ -23,7 +18,7 @@ func main() { commands.VersionCmd, ) - cmd := cli.PrepareMainCmd(RootCmd, "BC", os.ExpandEnv("$HOME/.basecoin")) + cmd := cli.PrepareMainCmd(rt, "BC", os.ExpandEnv("$HOME/.basecoin")) if err := cmd.Execute(); err != nil { os.Exit(1) }