Only run the log middleware once per request #662
Merged
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.
Currently, nested applications like
will log twice. This provides a simple mechanism to ensure that a particular middleware is only run once per request. This approach also supports reentrant routing. This approach also requires no sweeping changes to the tide middleware system to ensure only-once middleware behavior, and also allows the middleware to define the desired behavior if it has already run once for the request. For example, a more complex logging middleware might record the time spent in each nested application but only emit that aggregated information once per request
Description
Introduces a private unit struct which is added to request extensions.
How Has This Been Tested?
added a test in tests/log.rs that uses logtest to assert that only one request received log entry is emitted, and only one response sent message is emitted per request/response cycle, even with a nested app. this test previously failed
Types of changes
Checklist:
closes: #551
This same pattern should be applied to the cookie middleware as well if this is merged