Module: ActiveSupport::TaggedLogging::Formatter

Defined in:
activesupport/lib/active_support/tagged_logging.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#call(severity, timestamp, progname, msg) ⇒ Object

This method is invoked when a log event occurs.



22
23
24
# File 'activesupport/lib/active_support/tagged_logging.rb', line 22

def call(severity, timestamp, progname, msg)
  super(severity, timestamp, progname, "#{tags_text}#{msg}")
end

#clear_tags!Object



46
47
48
49
# File 'activesupport/lib/active_support/tagged_logging.rb', line 46

def clear_tags!
  @tags_text = nil
  current_tags.clear
end

#current_tagsObject



51
52
53
54
55
# File 'activesupport/lib/active_support/tagged_logging.rb', line 51

def current_tags
  # We use our object ID here to avoid conflicting with other instances
  thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{object_id}"
  Thread.current[thread_key] ||= []
end

#pop_tags(size = 1) ⇒ Object



41
42
43
44
# File 'activesupport/lib/active_support/tagged_logging.rb', line 41

def pop_tags(size = 1)
  @tags_text = nil
  current_tags.pop size
end

#push_tags(*tags) ⇒ Object



33
34
35
36
37
38
39
# File 'activesupport/lib/active_support/tagged_logging.rb', line 33

def push_tags(*tags)
  @tags_text = nil
  tags.flatten!
  tags.reject!(&:blank?)
  current_tags.concat tags
  tags
end

#tagged(*tags) ⇒ Object



26
27
28
29
30
31
# File 'activesupport/lib/active_support/tagged_logging.rb', line 26

def tagged(*tags)
  new_tags = push_tags(*tags)
  yield self
ensure
  pop_tags(new_tags.size)
end

#tags_textObject



57
58
59
60
61
62
63
64
65
66
# File 'activesupport/lib/active_support/tagged_logging.rb', line 57

def tags_text
  @tags_text ||= begin
    tags = current_tags
    if tags.one?
      "[#{tags[0]}] "
    elsif tags.any?
      tags.collect { |tag| "[#{tag}] " }.join
    end
  end
end