aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/tagged_logging.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2012-09-26 10:08:20 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2012-09-26 10:16:40 -0700
commitd36f57f430c011e889c7d45335beea4ea0dc9769 (patch)
tree34bfd79d41fa1ede8f0e848348fe58bd1f1bcfcd /activesupport/lib/active_support/tagged_logging.rb
parentd1cbcd781bdb974c4232c3d63e3d1b4d1f9c4bd5 (diff)
downloadrails-d36f57f430c011e889c7d45335beea4ea0dc9769.tar.gz
rails-d36f57f430c011e889c7d45335beea4ea0dc9769.tar.bz2
rails-d36f57f430c011e889c7d45335beea4ea0dc9769.zip
Add logger.push_tags and .pop_tags to complement logger.tagged
Diffstat (limited to 'activesupport/lib/active_support/tagged_logging.rb')
-rw-r--r--activesupport/lib/active_support/tagged_logging.rb42
1 files changed, 28 insertions, 14 deletions
diff --git a/activesupport/lib/active_support/tagged_logging.rb b/activesupport/lib/active_support/tagged_logging.rb
index 6d1ecabcbd..8af6fa4ba7 100644
--- a/activesupport/lib/active_support/tagged_logging.rb
+++ b/activesupport/lib/active_support/tagged_logging.rb
@@ -20,7 +20,24 @@ module ActiveSupport
super(severity, timestamp, progname, "#{tags_text}#{msg}")
end
- def clear!
+ def tagged(*tags)
+ new_tags = push_tags *tags
+ yield self
+ ensure
+ pop_tags new_tags.size
+ end
+
+ def push_tags(*tags)
+ tags.flatten.reject(&:blank?).tap do |new_tags|
+ current_tags.concat new_tags
+ end
+ end
+
+ def pop_tags(size = 1)
+ current_tags.pop size
+ end
+
+ def clear_tags!
current_tags.clear
end
@@ -29,12 +46,12 @@ module ActiveSupport
end
private
- def tags_text
- tags = current_tags
- if tags.any?
- tags.collect { |tag| "[#{tag}] " }.join
+ def tags_text
+ tags = current_tags
+ if tags.any?
+ tags.collect { |tag| "[#{tag}] " }.join
+ end
end
- end
end
def self.new(logger)
@@ -42,17 +59,14 @@ module ActiveSupport
logger.extend(self)
end
- def tagged(*new_tags)
- tags = formatter.current_tags
- new_tags = new_tags.flatten.reject(&:blank?)
- tags.concat new_tags
- yield self
- ensure
- tags.pop(new_tags.size)
+ delegate :push_tags, :pop_tags, :clear_tags!, to: :formatter
+
+ def tagged(*tags)
+ formatter.tagged(*tags) { yield self }
end
def flush
- formatter.clear!
+ clear_tags!
super if defined?(super)
end
end