Logging Scope
An opaque scope marker which can be attached to log sites to provide "per scope" behaviour for stateful logging operations (e.g. rate limiting).
Scopes are provided via the Provider interface and found by looking for the current ScopedLoggingContexts.
Stateful fluent logging APIs which need to look up per log site information (e.g. rate limit state) should do so via a LogSiteMap using the LogSiteKey passed into the postProcess method. If scopes are present in the log site then the log site key provided to the postProcess() method will already be specialized to take account of any scopes present.
Note that scopes have no effect when applied to stateless log statements (e.g. log statements without rate limiting) since the log site key for that log statement will not be used in any maps.