Merge pull request #27792 from tjoyal/sandbox-tagged-logging
TaggedLogging to return a new logger instance
This commit is contained in:
commit
e09c55dc8e
|
@ -1,3 +1,8 @@
|
|||
* Changed `ActiveSupport::TaggedLogging.new` to return a new logger instance instead
|
||||
of mutating the one received as parameter.
|
||||
|
||||
*Thierry Joyal*
|
||||
|
||||
* Define `unfreeze_time` as an alias of `travel_back` in `ActiveSupport::Testing::TimeHelpers`.
|
||||
|
||||
The alias is provided for symmetry with `freeze_time`.
|
||||
|
|
|
@ -61,8 +61,15 @@ module ActiveSupport
|
|||
end
|
||||
|
||||
def self.new(logger)
|
||||
# Ensure we set a default formatter so we aren't extending nil!
|
||||
logger.formatter ||= ActiveSupport::Logger::SimpleFormatter.new
|
||||
logger = logger.dup
|
||||
|
||||
if logger.formatter
|
||||
logger.formatter = logger.formatter.dup
|
||||
else
|
||||
# Ensure we set a default formatter so we aren't extending nil!
|
||||
logger.formatter = ActiveSupport::Logger::SimpleFormatter.new
|
||||
end
|
||||
|
||||
logger.formatter.extend Formatter
|
||||
logger.extend(self)
|
||||
end
|
||||
|
|
|
@ -19,9 +19,10 @@ class TaggedLoggingTest < ActiveSupport::TestCase
|
|||
test "sets logger.formatter if missing and extends it with a tagging API" do
|
||||
logger = Logger.new(StringIO.new)
|
||||
assert_nil logger.formatter
|
||||
ActiveSupport::TaggedLogging.new(logger)
|
||||
assert_not_nil logger.formatter
|
||||
assert_respond_to logger.formatter, :tagged
|
||||
|
||||
other_logger = ActiveSupport::TaggedLogging.new(logger)
|
||||
assert_not_nil other_logger.formatter
|
||||
assert_respond_to other_logger.formatter, :tagged
|
||||
end
|
||||
|
||||
test "tagged once" do
|
||||
|
@ -83,16 +84,28 @@ class TaggedLoggingTest < ActiveSupport::TestCase
|
|||
end
|
||||
|
||||
test "keeps each tag in their own instance" do
|
||||
@other_output = StringIO.new
|
||||
@other_logger = ActiveSupport::TaggedLogging.new(MyLogger.new(@other_output))
|
||||
other_output = StringIO.new
|
||||
other_logger = ActiveSupport::TaggedLogging.new(MyLogger.new(other_output))
|
||||
@logger.tagged("OMG") do
|
||||
@other_logger.tagged("BCX") do
|
||||
other_logger.tagged("BCX") do
|
||||
@logger.info "Cool story"
|
||||
@other_logger.info "Funky time"
|
||||
other_logger.info "Funky time"
|
||||
end
|
||||
end
|
||||
assert_equal "[OMG] Cool story\n", @output.string
|
||||
assert_equal "[BCX] Funky time\n", @other_output.string
|
||||
assert_equal "[BCX] Funky time\n", other_output.string
|
||||
end
|
||||
|
||||
test "does not share the same formatter instance of the original logger" do
|
||||
other_logger = ActiveSupport::TaggedLogging.new(@logger)
|
||||
|
||||
@logger.tagged("OMG") do
|
||||
other_logger.tagged("BCX") do
|
||||
@logger.info "Cool story"
|
||||
other_logger.info "Funky time"
|
||||
end
|
||||
end
|
||||
assert_equal "[OMG] Cool story\n[BCX] Funky time\n", @output.string
|
||||
end
|
||||
|
||||
test "cleans up the taggings on flush" do
|
||||
|
|
Loading…
Reference in New Issue