prevent string formatting in Entry.Logf when log level is not enabled #903
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a conditional to
Entry.Logf
to avoid string formatting when the given log level is not enabled.Actual log production is guarded against in
Entry.Log
, however this still results in a call tofmt.Sprintf
inEntry.Logf
before callingEntry.Log
. The conditional is necessary in both places since bothEntry.Logf
andEntry.Log
are public methods.My team ran into high memory usage as a result of this "hidden" formatting when we deployed a service with lots of calls to
Debugf
with debug logging disabled. The change in this PR will prevent others from running into this issue in the future. It also maintains consistency withLogger.Logf
by avoiding any formatting or other work if the given log level is not enabled.