Skip to content

Commit e9390df

Browse files
spoo-barjgimeno
andauthored
feat: adding zerolog logging to cosmovisor (#10217)
* adding zerolog to cosmovisor * replacing println with logger * fixing tests * fixing err log format * addign changelog * fixing formatting * using fields in loggin * using fields in logging Co-authored-by: Jonathan Gimeno <jgimeno@gmail.com>
1 parent 3138527 commit e9390df

File tree

9 files changed

+40
-21
lines changed

9 files changed

+40
-21
lines changed

cosmovisor/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
4949

5050
+ [\#10018](https://github.com/cosmos/cosmos-sdk/pull/10018) Strict boolean argument parsing: cosmovisor will fail if user will not set correctly a boolean variable. Correct values are: "true", "false", "" (not setting) - all case not sensitive.
5151
+ [\#10036](https://github.com/cosmos/cosmos-sdk/pull/10036) Improve logs when downloading the binary.
52+
+ [\#10217](https://github.com/cosmos/cosmos-sdk/pull/10217) Replacing logging to use zerolog.
5253

5354
## v0.1 2021-08-06
5455

cosmovisor/args.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ func (cfg *Config) UpgradeInfo() UpgradeInfo {
247247
return cfg.currentUpgrade
248248

249249
returnError:
250-
fmt.Println("[cosmovisor], error reading", filename, err)
250+
Logger.Error().Err(err).Str("filename", filename).Msg("failed to read")
251251
cfg.currentUpgrade.Name = "_"
252252
return cfg.currentUpgrade
253253
}

cosmovisor/cmd/cosmovisor/main.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package main
22

33
import (
4-
"fmt"
54
"os"
65

76
"github.com/cosmos/cosmos-sdk/cosmovisor"
87
"github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor/cmd"
98
)
109

1110
func main() {
11+
cosmovisor.SetupLogging()
1212
if err := Run(os.Args[1:]); err != nil {
13-
fmt.Fprintf(os.Stderr, "[cosmovisor] %+v\n", err)
13+
cosmovisor.Logger.Error().Err(err).Msg("")
1414
os.Exit(1)
1515
}
1616
}
@@ -31,11 +31,11 @@ func Run(args []string) error {
3131
doUpgrade, err := launcher.Run(args, os.Stdout, os.Stderr)
3232
// if RestartAfterUpgrade, we launch after a successful upgrade (only condition LaunchProcess returns nil)
3333
for cfg.RestartAfterUpgrade && err == nil && doUpgrade {
34-
fmt.Println("[cosmovisor] upgrade detected, relaunching the app ", cfg.Name)
34+
cosmovisor.Logger.Info().Str("app", cfg.Name).Msg("upgrade detected, relaunching")
3535
doUpgrade, err = launcher.Run(args, os.Stdout, os.Stderr)
3636
}
3737
if doUpgrade && err == nil {
38-
fmt.Println("[cosmovisor] upgrade detected, DAEMON_RESTART_AFTER_UPGRADE is off. Verify new upgrade and start cosmovisor again.")
38+
cosmovisor.Logger.Info().Msg("upgrade detected, DAEMON_RESTART_AFTER_UPGRADE is off. Verify new upgrade and start cosmovisor again.")
3939
}
4040

4141
return err

cosmovisor/go.mod

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ require (
2828
github.com/mitchellh/go-homedir v1.0.0 // indirect
2929
github.com/mitchellh/go-testing-interface v1.0.0 // indirect
3030
github.com/pmezard/go-difflib v1.0.0 // indirect
31+
github.com/rs/zerolog v1.25.0 // indirect
3132
github.com/ulikunitz/xz v0.5.5 // indirect
3233
go.opencensus.io v0.23.0 // indirect
3334
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
@@ -36,7 +37,7 @@ require (
3637
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602 // indirect
3738
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect
3839
golang.org/x/text v0.3.5 // indirect
39-
golang.org/x/tools v0.1.2 // indirect
40+
golang.org/x/tools v0.1.5 // indirect
4041
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
4142
google.golang.org/appengine v1.6.7 // indirect
4243
google.golang.org/grpc v1.38.0 // indirect

cosmovisor/go.sum

+7
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
5353
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
5454
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
5555
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
56+
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
5657
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5758
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
5859
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -67,6 +68,7 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
6768
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
6869
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
6970
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
71+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
7072
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
7173
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
7274
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -171,10 +173,14 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6
171173
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
172174
github.com/otiai10/mint v1.3.2 h1:VYWnrP5fXmz1MXvjuUvcBrXSjGE6xjON+axB/UrpO3E=
173175
github.com/otiai10/mint v1.3.2/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
176+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
174177
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
175178
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
176179
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
177180
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
181+
github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
182+
github.com/rs/zerolog v1.25.0 h1:Rj7XygbUHKUlDPcVdoLyR91fJBsduXj5fRxyqIQj/II=
183+
github.com/rs/zerolog v1.25.0/go.mod h1:7KHcEGe0QZPOm2IE4Kpb5rTh6n1h2hIgS5OOnu1rUaI=
178184
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
179185
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
180186
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
@@ -397,6 +403,7 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f
397403
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
398404
golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA=
399405
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
406+
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
400407
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
401408
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
402409
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

cosmovisor/logger.go

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package cosmovisor
2+
3+
import (
4+
"os"
5+
"time"
6+
7+
"github.com/rs/zerolog"
8+
)
9+
10+
var Logger zerolog.Logger
11+
12+
func SetupLogging() {
13+
output := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.Kitchen}
14+
Logger = zerolog.New(output).With().Str("module", "cosmovisor").Timestamp().Logger()
15+
}

cosmovisor/process.go

+7-11
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"io"
77
"io/ioutil"
8-
"log"
98
"os"
109
"os/exec"
1110
"os/signal"
@@ -40,7 +39,7 @@ func (l Launcher) Run(args []string, stdout, stderr io.Writer) (bool, error) {
4039
if err := EnsureBinary(bin); err != nil {
4140
return false, fmt.Errorf("current binary is invalid: %w", err)
4241
}
43-
fmt.Println("[cosmovisor] running ", bin, args)
42+
Logger.Info().Str("path", bin).Strs("args", args).Msg("running app")
4443
cmd := exec.Command(bin, args...)
4544
cmd.Stdout = stdout
4645
cmd.Stderr = stderr
@@ -53,7 +52,7 @@ func (l Launcher) Run(args []string, stdout, stderr io.Writer) (bool, error) {
5352
go func() {
5453
sig := <-sigs
5554
if err := cmd.Process.Signal(sig); err != nil {
56-
log.Fatal(bin, "terminated. Error:", err)
55+
Logger.Fatal().Err(err).Str("bin", bin).Msg("terminated")
5756
}
5857
}()
5958

@@ -92,7 +91,7 @@ func (l Launcher) WaitForUpgradeOrExit(cmd *exec.Cmd) (bool, error) {
9291
select {
9392
case <-l.fw.MonitorUpdate(currentUpgrade):
9493
// upgrade - kill the process and restart
95-
fmt.Println("[cosmovisor] Daemon shutting down in an attempt to restart")
94+
Logger.Info().Msg("Daemon shutting down in an attempt to restart")
9695
_ = cmd.Process.Kill()
9796
case err := <-cmdDone:
9897
l.fw.Stop()
@@ -133,7 +132,7 @@ func doBackup(cfg *Config) error {
133132
stStr := fmt.Sprintf("%d-%d-%d", st.Year(), st.Month(), st.Day())
134133
dst := filepath.Join(cfg.Home, fmt.Sprintf("data"+"-backup-%s", stStr))
135134

136-
fmt.Printf("starting to take backup of data directory at time %s", st)
135+
Logger.Info().Time("backup start time", st).Msg("starting to take backup of data directory")
137136

138137
// copy the $DAEMON_HOME/data to a backup dir
139138
err = copy.Copy(filepath.Join(cfg.Home, "data"), dst)
@@ -144,9 +143,7 @@ func doBackup(cfg *Config) error {
144143

145144
// backup is done, lets check endtime to calculate total time taken for backup process
146145
et := time.Now()
147-
timeTaken := et.Sub(st)
148-
fmt.Printf("backup saved at location: %s, completed at time: %s\n"+
149-
"time taken to complete the backup: %s", dst, et, timeTaken)
146+
Logger.Info().Str("backup saved at", dst).Time("backup completion time", et).TimeDiff("time taken to complete backup", et, st).Msg("backup completed")
150147
}
151148

152149
return nil
@@ -166,15 +163,14 @@ func doPreUpgrade(cfg *Config) error {
166163

167164
if err != nil {
168165
if err.(*exec.ExitError).ProcessState.ExitCode() == 1 {
169-
fmt.Println("pre-upgrade command does not exist. continuing the upgrade.")
166+
Logger.Info().Msg("pre-upgrade command does not exist. continuing the upgrade.")
170167
return nil
171168
}
172169
if err.(*exec.ExitError).ProcessState.ExitCode() == 30 {
173170
return fmt.Errorf("pre-upgrade command failed : %w", err)
174171
}
175172
if err.(*exec.ExitError).ProcessState.ExitCode() == 31 {
176-
fmt.Println("pre-upgrade command failed. retrying. attempt:", counter)
177-
fmt.Println(err)
173+
Logger.Error().Err(err).Int("attempt", counter).Msg("pre-upgrade command failed. retrying")
178174
continue
179175
}
180176
}

cosmovisor/scanner.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"encoding/json"
55
"errors"
66
"fmt"
7-
"log"
87
"os"
98
"path/filepath"
109
"time"
@@ -94,7 +93,7 @@ func (fw *fileWatcher) CheckUpdate(currentUpgrade UpgradeInfo) bool {
9493
}
9594
info, err := parseUpgradeInfoFile(fw.filename)
9695
if err != nil {
97-
log.Fatal("Can't parse upgrade info file. Err: ", err)
96+
Logger.Fatal().Err(err).Msg("Can't parse upgrade info file")
9897
return false
9998
}
10099
if !fw.initialized { // daemon has restarted

cosmovisor/upgrade.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ func DoUpgrade(cfg *Config, info UpgradeInfo) error {
3636
}
3737

3838
// If not there, then we try to download it... maybe
39-
fmt.Println("[cosmovisor] No upgrade binary found, beginning to download it")
39+
Logger.Info().Msg("No upgrade binary found, beginning to download it")
4040
if err := DownloadBinary(cfg, info); err != nil {
4141
return fmt.Errorf("cannot download binary. %w", err)
4242
}
43-
fmt.Println("[cosmovisor] Downloading binary complete")
43+
Logger.Info().Msg("Downloading binary complete")
4444

4545
// and then set the binary again
4646
if err := EnsureBinary(cfg.UpgradeBin(info.Name)); err != nil {

0 commit comments

Comments
 (0)