Skip to content

Commit 4b6046a

Browse files
authored
adding ability to specify the default log level for the application (#649)
1 parent 3aee476 commit 4b6046a

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

Diff for: utils/context/getters.go

+14
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,20 @@ func GetDurationFromContext(ctx context.Context, key CTXKey) (time.Duration, err
3636
return time.Duration(0), ErrValueWrongType
3737
}
3838

39+
//GetLogLevelFromContext - given a CTXKey return the duration value from the context if it exists
40+
func GetLogLevelFromContext(ctx context.Context, key CTXKey) (zerolog.Level, error) {
41+
v := ctx.Value(key)
42+
if v == nil {
43+
// value not on context
44+
return zerolog.InfoLevel, ErrNotInContext
45+
}
46+
if l, ok := v.(zerolog.Level); ok {
47+
return l, nil
48+
}
49+
// value not a log level
50+
return zerolog.InfoLevel, ErrValueWrongType
51+
}
52+
3953
//GetLogger - return the logger value from the context if it exists
4054
func GetLogger(ctx context.Context) (*zerolog.Logger, error) {
4155
// get the logger from the context, if the logger is disabled

Diff for: utils/context/keys.go

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ const (
5353
BraveTransferPromotionIDCTXKey CTXKey = "brave_transfer_promotion_id"
5454
// WalletOnPlatformPriorToCTXKey - context key for the build time of code
5555
WalletOnPlatformPriorToCTXKey CTXKey = "wallet_on_platform_prior_to"
56+
// LogLevelCTXKey - context key for application logging level
57+
LogLevelCTXKey CTXKey = "log_level"
5658
)
5759

5860
var (

Diff for: utils/logging/logging.go

+18-7
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,25 @@ func init() {
3131
prometheus.MustRegister(droppedLogTotal)
3232
}
3333

34+
// SetupLoggerWithLevel - helper to setup a logger and associate with context with a given log level
35+
func SetupLoggerWithLevel(ctx context.Context, level zerolog.Level) (context.Context, *zerolog.Logger) {
36+
// setup context with log level passed in
37+
ctx = context.WithValue(ctx, appctx.LogLevelCTXKey, level)
38+
// call SetupLogger
39+
return SetupLogger(ctx)
40+
}
41+
3442
// SetupLogger - helper to setup a logger and associate with context
3543
func SetupLogger(ctx context.Context) (context.Context, *zerolog.Logger) {
36-
var (
37-
env, err = appctx.GetStringFromContext(ctx, appctx.EnvironmentCTXKey)
38-
)
44+
env, err := appctx.GetStringFromContext(ctx, appctx.EnvironmentCTXKey)
3945
if err != nil {
4046
// if not in context, default to local
4147
env = "local"
4248
}
49+
50+
// defaults to info level
51+
level, _ := appctx.GetLogLevelFromContext(ctx, appctx.LogLevelCTXKey)
52+
4353
var output io.Writer
4454
if env != "local" {
4555
// this log writer uses a ring buffer and drops messages that cannot be processed
@@ -71,10 +81,11 @@ func SetupLogger(ctx context.Context) (context.Context, *zerolog.Logger) {
7181
}
7282
}
7383

74-
if !debug {
75-
// if not debug, set log level to info
76-
l = l.Level(zerolog.InfoLevel)
77-
} else {
84+
// set the log level
85+
l = l.Level(level)
86+
87+
// debug override
88+
if debug {
7889
l = l.Level(zerolog.DebugLevel)
7990
}
8091

0 commit comments

Comments
 (0)