Skip to content
This repository was archived by the owner on Jul 15, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions bridge/setu/util/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"io/ioutil"
"net/http"
"net/url"
"os"
"strconv"
"sync"
"time"
Expand Down Expand Up @@ -86,7 +85,8 @@ var loggerOnce sync.Once
func Logger() log.Logger {
loggerOnce.Do(func() {
defaultLevel := "info"
logger = log.NewTMLogger(log.NewSyncWriter(os.Stdout))
logsWriter := helper.GetLogsWriter(helper.GetConfig().LogsWriterFile)
logger = log.NewTMLogger(log.NewSyncWriter(logsWriter))
option, err := log.AllowLevel(viper.GetString("log_level"))
if err != nil {
// cosmos sdk is using different style of log format
Expand Down
31 changes: 31 additions & 0 deletions cmd/heimdalld/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
"github.com/tendermint/tendermint/crypto"
"github.com/tendermint/tendermint/crypto/secp256k1"
"github.com/tendermint/tendermint/libs/cli"
tmflags "github.com/tendermint/tendermint/libs/cli/flags"
"github.com/tendermint/tendermint/libs/common"
"github.com/tendermint/tendermint/libs/log"
"github.com/tendermint/tendermint/node"
Expand Down Expand Up @@ -249,6 +250,19 @@ For profiling and benchmarking purposes, CPU profiling can be enabled via the '-
which accepts a path for the resulting pprof file.
`,
RunE: func(cmd *cobra.Command, args []string) error {
LogsWriterFile := viper.GetString(helper.LogsWriterFileFlag)
if LogsWriterFile != "" {
logWriter := helper.GetLogsWriter(LogsWriterFile)

logger, err := SetupCtxLogger(logWriter, ctx.Config.LogLevel)
if err != nil {
logger.Error("Unable to setup logger", "err", err)
return err
}

ctx.Logger = logger
}

ctx.Logger.Info("starting ABCI with Tendermint")

startRestServer, _ := cmd.Flags().GetBool(helper.RestServerFlag)
Expand Down Expand Up @@ -754,3 +768,20 @@ func CryptoKeyToPubkey(key crypto.PubKey) hmTypes.PubKey {
validatorPublicKey := helper.GetPubObjects(key)
return hmTypes.NewPubKey(validatorPublicKey[:])
}

func SetupCtxLogger(logWriter io.Writer, logLevel string) (log.Logger, error) {
logger := log.NewTMLogger(log.NewSyncWriter(logWriter))

logger, err := tmflags.ParseLogLevel(logLevel, logger, cfg.DefaultLogLevel())
if err != nil {
return nil, err
}

if viper.GetBool(cli.TraceFlag) {
logger = log.NewTracingLogger(logger)
}

logger = logger.With("module", "main")

return logger, nil
}
62 changes: 50 additions & 12 deletions helper/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package helper
import (
"crypto/ecdsa"
"fmt"
"io"
"log"
"math/big"
"os"
Expand Down Expand Up @@ -35,6 +36,7 @@ const (
RestServerFlag = "rest-server"
BridgeFlag = "bridge"
LogLevel = "log_level"
LogsWriterFileFlag = "logs_writer_file"
SeedsFlag = "seeds"

MainChain = "mainnet"
Expand Down Expand Up @@ -172,8 +174,10 @@ type Configuration struct {
// wait time related options
NoACKWaitTime time.Duration `mapstructure:"no_ack_wait_time"` // Time ack service waits to clear buffer and elect new proposer

// json logging
LogsType string `mapstructure:"logs_type"` // if true, enable logging in json format
// Log related options
LogsType string `mapstructure:"logs_type"` // if true, enable logging in json format
LogsWriterFile string `mapstructure:"logs_writer_file"` // if given, Logs will be written to this file else os.Stdout

// current chain - newSelectionAlgoHeight depends on this
Chain string `mapstructure:"chain"`
}
Expand Down Expand Up @@ -254,14 +258,6 @@ func InitHeimdallConfigWith(homeDir string, heimdallConfigFileFromFLag string) {
log.Fatalln("Unable to unmarshall config", "Error", err)
}

// perform check for json logging
if conf.LogsType == "json" {
Logger = logger.NewTMJSONLogger(logger.NewSyncWriter(os.Stdout))
} else {
// default fallback
Logger = logger.NewTMLogger(logger.NewSyncWriter(os.Stdout))
}

// if there is a file with overrides submitted via flags => read it an merge it with the alreadey read standard configuration
if heimdallConfigFileFromFLag != "" {
heimdallViperFromFlag := viper.New()
Expand All @@ -286,6 +282,14 @@ func InitHeimdallConfigWith(homeDir string, heimdallConfigFileFromFLag string) {
log.Fatalln("Unable to read flag values. Check log for details.", "Error", err)
}

// perform check for json logging
if conf.LogsType == "json" {
Logger = logger.NewTMJSONLogger(logger.NewSyncWriter(GetLogsWriter(conf.LogsWriterFile)))
} else {
// default fallback
Logger = logger.NewTMLogger(logger.NewSyncWriter(GetLogsWriter(conf.LogsWriterFile)))
}

// perform checks for timeout
if conf.EthRPCTimeout == 0 {
// fallback to default
Expand Down Expand Up @@ -389,8 +393,9 @@ func GetDefaultHeimdallConfig() Configuration {

NoACKWaitTime: NoACKWaitTime,

LogsType: DefaultLogsType,
Chain: DefaultChain,
LogsType: DefaultLogsType,
Chain: DefaultChain,
LogsWriterFile: "", // default to stdout
}
}

Expand Down Expand Up @@ -640,6 +645,17 @@ func DecorateWithHeimdallFlags(cmd *cobra.Command, v *viper.Viper, loggerInstanc
if err := v.BindPFlag(ChainFlag, cmd.PersistentFlags().Lookup(ChainFlag)); err != nil {
loggerInstance.Error(fmt.Sprintf("%v | BindPFlag | %v", caller, ChainFlag), "Error", err)
}

// add logsWriterFile flag
cmd.PersistentFlags().String(
LogsWriterFileFlag,
"",
"Set logs writer file, Default is os.Stdout",
)

if err := v.BindPFlag(LogsWriterFileFlag, cmd.PersistentFlags().Lookup(LogsWriterFileFlag)); err != nil {
loggerInstance.Error(fmt.Sprintf("%v | BindPFlag | %v", caller, LogsWriterFileFlag), "Error", err)
}
}

func (c *Configuration) UpdateWithFlags(v *viper.Viper, loggerInstance logger.Logger) error {
Expand Down Expand Up @@ -750,6 +766,11 @@ func (c *Configuration) UpdateWithFlags(v *viper.Viper, loggerInstance logger.Lo
c.Chain = stringConfgValue
}

stringConfgValue = v.GetString(LogsWriterFileFlag)
if stringConfgValue != "" {
c.LogsWriterFile = stringConfgValue
}

return nil
}

Expand Down Expand Up @@ -809,6 +830,10 @@ func (c *Configuration) Merge(cc *Configuration) {
if cc.Chain != "" {
c.Chain = cc.Chain
}

if cc.LogsWriterFile != "" {
c.LogsWriterFile = cc.LogsWriterFile
}
}

// DecorateWithTendermintFlags creates tendermint flags for desired command and bind them to viper
Expand Down Expand Up @@ -842,3 +867,16 @@ func UpdateTendermintConfig(tendermintConfig *cfg.Config, v *viper.Viper) {
}
}
}

func GetLogsWriter(logsWriterFile string) io.Writer {
if logsWriterFile != "" {
logWriter, err := os.OpenFile(logsWriterFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening log writer file: %v", err)
}

return logWriter
} else {
return os.Stdout
}
}
6 changes: 3 additions & 3 deletions server/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"net"
"net/http"
"os"
"runtime/debug"
"time"

Expand Down Expand Up @@ -40,7 +39,8 @@ func StartRestServer(mainCtx ctx.Context, cdc *codec.Codec, registerRoutesFn fun
// init vars for the Light Client Rest server
cliCtx := context.NewCLIContext().WithCodec(cdc)
router := mux.NewRouter()
logger := tmLog.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "rest-server")
logsWriter := helper.GetLogsWriter(helper.GetConfig().LogsWriterFile)
logger := tmLog.NewTMLogger(log.NewSyncWriter(logsWriter)).With("module", "rest-server")

registerRoutesFn(cliCtx, router)

Expand Down Expand Up @@ -77,7 +77,7 @@ func StartRestServer(mainCtx ctx.Context, cdc *codec.Codec, registerRoutesFn fun
})

// Setup gRPC server
gRPCLogger := tmLog.NewTMLogger(log.NewSyncWriter(os.Stdout)).With("module", "gRPC-server")
gRPCLogger := tmLog.NewTMLogger(log.NewSyncWriter(logsWriter)).With("module", "gRPC-server")
if err := gRPC.SetupGRPCServer(mainCtx, cdc, viper.GetString(FlagGrpcAddr), gRPCLogger); err != nil {
return err
}
Expand Down