Skip to content

Commit f4c983a

Browse files
authored
Replace --debug parameter with --logLevel; trim debug logs (#133)
This moves some of the wordier debug logs to trace-level and replaces the `--debug` parameter with a `--logLevel` so that callers that want trace-level logs can access them.
1 parent d7ce176 commit f4c983a

File tree

6 files changed

+51
-21
lines changed

6 files changed

+51
-21
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ The verifier will now check to completion to make sure that there are no inconsi
139139
| `--clean` | If set, drop all previous verification metadata before starting |
140140
| `--readPreference <value>` | Read preference for reading data from clusters. May be 'primary', 'secondary', 'primaryPreferred', 'secondaryPreferred', or 'nearest' (default: "primary") |
141141
| `--partitionSizeMB <Megabytes>` | Megabytes to use for a partition. Change only for debugging. 0 means use partitioner default. (default: 0) |
142-
| `--debug` | Turn on debug logging |
142+
| `--logLevel` | Set the logging to `info`, `debug`, or `trace` level. |
143143
| `--checkOnly` | Do not run the webserver or recheck, just run the check (for debugging) |
144144
| `--failureDisplaySize <value>` | Number of failures to display. Will display all failures if the number doesn’t exceed this limit by 25% (default: 20) |
145145
| `--ignoreReadConcern` | Use connection-default read concerns rather than setting majority read concern. This option may degrade consistency, so only enable it if majority read concern (the default) doesn’t work. |

internal/verifier/change_stream.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ func (verifier *Verifier) HandleChangeStreamEvents(ctx context.Context, batch ch
263263
latestTimestampTime := time.Unix(int64(latestTimestamp.T), 0)
264264
lag := time.Unix(int64(batch.clusterTime.T), 0).Sub(latestTimestampTime)
265265

266-
verifier.logger.Debug().
266+
verifier.logger.Trace().
267267
Str("origin", string(eventOrigin)).
268268
Int("count", len(docIDs)).
269269
Any("latestTimestamp", latestTimestamp).

internal/verifier/compare.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -656,20 +656,20 @@ func (verifier *Verifier) getDocumentsCursor(ctx mongo.SessionContext, collectio
656656
// Suppress this log for recheck tasks because the list of IDs can be
657657
// quite long.
658658
if !task.IsRecheck() {
659+
if verifier.logger.Trace().Enabled() {
660+
evt := verifier.logger.Trace().
661+
Any("task", task.PrimaryKey)
659662

660-
evt := verifier.logger.Debug().
661-
Any("task", task.PrimaryKey)
663+
cmdStr, err := bson.MarshalExtJSON(cmd, true, false)
664+
if err != nil {
665+
cmdStr = fmt.Appendf(nil, "%s", cmd)
666+
}
662667

663-
extJSON, err := bson.MarshalExtJSON(cmd, true, false)
664-
if err != nil {
665-
evt = evt.Str("cmd", fmt.Sprintf("%s", cmd))
666-
} else {
667-
evt = evt.RawJSON("cmd", extJSON)
668+
evt.
669+
Str("cmd", string(cmdStr)).
670+
Str("options", fmt.Sprintf("%v", *runCommandOptions)).
671+
Msg("getDocuments command.")
668672
}
669-
670-
evt.
671-
Str("options", fmt.Sprintf("%v", *runCommandOptions)).
672-
Msg("getDocuments command.")
673673
}
674674

675675
return collection.Database().RunCommandCursor(ctx, cmd, runCommandOptions)

internal/verifier/migration_verifier.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ func (verifier *Verifier) getGenerationWhileLocked() (int, bool) {
457457

458458
func (verifier *Verifier) maybeAppendGlobalFilterToPredicates(predicates bson.A) bson.A {
459459
if len(verifier.globalFilter) == 0 {
460-
verifier.logger.Debug().Msg("No filter to append; globalFilter is nil")
460+
verifier.logger.Trace().Msg("No filter to append; globalFilter is nil")
461461
return predicates
462462
}
463463
verifier.logger.Debug().Str("filter", fmt.Sprintf("%v", verifier.globalFilter)).Msg("Appending filter to find query")

internal/verifier/recheck.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func (verifier *Verifier) insertRecheckDocs(
169169
)
170170
}
171171

172-
verifier.logger.Debug().
172+
verifier.logger.Trace().
173173
Int("generation", generation).
174174
Int("count", len(documentIDs)).
175175
Msg("Persisted rechecks.")

main/migration_verifier.go

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"github.com/10gen/migration-verifier/internal/verifier"
14+
"github.com/10gen/migration-verifier/mslices"
1415
"github.com/pkg/errors"
1516
"github.com/rs/zerolog"
1617
"github.com/rs/zerolog/log"
@@ -39,7 +40,7 @@ const (
3940
partitionSizeMB = "partitionSizeMB"
4041
recheckMaxSizeMB = "recheckMaxSizeMB"
4142
checkOnly = "checkOnly"
42-
debugFlag = "debug"
43+
logLevelFlag = "logLevel"
4344
failureDisplaySize = "failureDisplaySize"
4445
ignoreReadConcernFlag = "ignoreReadConcern"
4546
configFileFlag = "configFile"
@@ -52,6 +53,17 @@ const (
5253
var Revision = buildVarDefaultStr
5354
var BuildTime = buildVarDefaultStr
5455

56+
var logLevelStrs = lo.Map(
57+
mslices.Of(
58+
zerolog.InfoLevel,
59+
zerolog.DebugLevel,
60+
zerolog.TraceLevel,
61+
),
62+
func(lv zerolog.Level, _ int) string {
63+
return lv.String()
64+
},
65+
)
66+
5567
func main() {
5668
zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
5769

@@ -153,9 +165,10 @@ func main() {
153165
Value: 0,
154166
Usage: "`Megabytes` to use for a partition. Change only for debugging. 0 means use partitioner default.",
155167
}),
156-
altsrc.NewBoolFlag(cli.BoolFlag{
157-
Name: debugFlag,
158-
Usage: "Turn on debug logging",
168+
altsrc.NewStringFlag(cli.StringFlag{
169+
Name: logLevelFlag,
170+
Value: zerolog.InfoLevel.String(),
171+
Usage: "Level of detail to include in logs. One of: " + strings.Join(logLevelStrs, ", "),
159172
}),
160173
altsrc.NewBoolFlag(cli.BoolFlag{
161174
Name: checkOnly,
@@ -196,9 +209,11 @@ func main() {
196209
if err != nil {
197210
return err
198211
}
199-
if cCtx.Bool(debugFlag) {
200-
zerolog.SetGlobalLevel(zerolog.DebugLevel)
212+
213+
if err := handleLogLevelArg(cCtx); err != nil {
214+
return err
201215
}
216+
202217
if cCtx.Bool(checkOnly) {
203218
err := verifier.WritesOff(ctx)
204219
if err != nil {
@@ -217,6 +232,21 @@ func main() {
217232
}
218233
}
219234

235+
func handleLogLevelArg(cCtx *cli.Context) error {
236+
logLevelStr := cCtx.String(logLevelFlag)
237+
if !slices.Contains(logLevelStrs, logLevelStr) {
238+
return errors.Errorf("invalid %#q", logLevelFlag)
239+
}
240+
logLevel, err := zerolog.ParseLevel(logLevelStr)
241+
if err != nil {
242+
return errors.Wrapf(err, "parsing %#q", logLevelFlag)
243+
}
244+
245+
zerolog.SetGlobalLevel(logLevel)
246+
247+
return nil
248+
}
249+
220250
func handleArgs(ctx context.Context, cCtx *cli.Context) (*verifier.Verifier, error) {
221251
verifierSettings := verifier.VerifierSettings{}
222252
if cCtx.Bool(ignoreReadConcernFlag) {

0 commit comments

Comments
 (0)