Feature #16144
closedHonor Logger#level overrides in Logger#add
Description
We attempt to override Logger#level in Rails’s Logger subclass to allow setting a different level per thread (and thus per request). But Logger#add checks the new message’s severity against the @level instance variable, so overriding #level doesn’t have the intended effect. (Because we prepend a check against #level to #add, you can only set the thread-local level greater than or equal to @level, not less. We’d like to allow setting any thread-local level.)
This patch modifies Logger#add to check #level so that third-party loggers can customize how the current level is determined without needing to reimplement #add or juggle multiple underlying Logger instances.
This is my first Ruby patch. I wasn’t sure whether to submit it here or ruby/logger on GitHub. I’m sorry if this isn’t the right place.
Files