aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/tagged_logging.rb8
-rw-r--r--activesupport/test/tagged_logging_test.rb11
2 files changed, 19 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/tagged_logging.rb b/activesupport/lib/active_support/tagged_logging.rb
index 18bc919734..09bfc95231 100644
--- a/activesupport/lib/active_support/tagged_logging.rb
+++ b/activesupport/lib/active_support/tagged_logging.rb
@@ -54,6 +54,14 @@ module ActiveSupport
end
end
+ def self.create(f, formatter, level)
+ logger = ActiveSupport::Logger.new f
+ logger.formatter = formatter
+ logger = new(logger)
+ logger.level = ActiveSupport::Logger.const_get(level.to_s.upcase)
+ logger
+ end
+
def self.new(logger)
# Ensure we set a default formatter so we aren't extending nil!
logger.formatter ||= ActiveSupport::Logger::SimpleFormatter.new
diff --git a/activesupport/test/tagged_logging_test.rb b/activesupport/test/tagged_logging_test.rb
index 27f629474e..0f5b2cba8f 100644
--- a/activesupport/test/tagged_logging_test.rb
+++ b/activesupport/test/tagged_logging_test.rb
@@ -22,6 +22,17 @@ class TaggedLoggingTest < ActiveSupport::TestCase
assert logger.formatter.respond_to?(:tagged)
end
+ test 'creates a tagged logger with the appropriate level and formatter' do
+ stringio = StringIO.new
+ logger = ActiveSupport::TaggedLogging.create(stringio, ActiveSupport::Logger::SimpleFormatter.new, :debug)
+ logger.debug("foo")
+
+ assert_not_nil logger.formatter
+ assert logger.formatter.respond_to?(:tagged)
+ assert_equal 0, logger.level
+ assert stringio.string.include?("foo")
+ end
+
test "tagged once" do
@logger.tagged("BCX") { @logger.info "Funky time" }
assert_equal "[BCX] Funky time\n", @output.string