@@ -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
3543func 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