Class: Logfoo::Context
- Inherits:
-
Object
- Object
- Logfoo::Context
- Defined in:
- lib/logfoo/context.rb
Constant Summary collapse
- THREAD_CONTEXT =
:"logfoo_context"
Instance Attribute Summary collapse
-
#level ⇒ Object
Returns the value of attribute level.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#thread_id ⇒ Object
readonly
Returns the value of attribute thread_id.
-
#timed ⇒ Object
readonly
Returns the value of attribute timed.
Instance Method Summary collapse
- #[]=(k, v) ⇒ Object
- #_call_log_fn(fn, payload) ⇒ Object
- #add(level, message, progname, &block) ⇒ Object
- #context(keys = nil) ⇒ Object
-
#initialize(app, name, context = nil) ⇒ Context
constructor
A new instance of Context.
Constructor Details
Instance Attribute Details
#level ⇒ Object
Returns the value of attribute level.
3 4 5 |
# File 'lib/logfoo/context.rb', line 3 def level @level end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
3 4 5 |
# File 'lib/logfoo/context.rb', line 3 def name @name end |
#thread_id ⇒ Object (readonly)
Returns the value of attribute thread_id.
3 4 5 |
# File 'lib/logfoo/context.rb', line 3 def thread_id @thread_id end |
#timed ⇒ Object (readonly)
Returns the value of attribute timed.
3 4 5 |
# File 'lib/logfoo/context.rb', line 3 def timed @timed end |
Instance Method Details
#[]=(k, v) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/logfoo/context.rb', line 19 def []=(k,v) if v == nil @context.delete(k) else @context[k] = v end end |
#_call_log_fn(fn, payload) ⇒ Object
77 78 79 80 81 82 83 84 85 86 |
# File 'lib/logfoo/context.rb', line 77 def _call_log_fn(fn, payload) case fn.arity when 0 fn.call when 1 fn.call(payload) else raise RuntimeError, "invalid lambda arity, must be 0 or 1, was #{fn.arity}" end end |
#add(level, message, progname, &block) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/logfoo/context.rb', line 51 def add(level, , progname, &block) lv = Logfoo::LEVELS[level] if lv public_send(lv.downcase, , &block) end end |
#context(keys = nil) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/logfoo/context.rb', line 27 def context(keys = nil) if block_given? keys ||= {} begin Thread.current[THREAD_CONTEXT] ||= [] Thread.current[THREAD_CONTEXT].push(keys) yield ensure Thread.current[THREAD_CONTEXT].pop if Thread.current[THREAD_CONTEXT] == [] Thread.current[THREAD_CONTEXT] = nil end end else keys = (Thread.current[THREAD_CONTEXT] || []).inject({}) do |memo, kvs| kvs.each do |(k,v)| memo.merge!(k => v) end memo end @context.merge(keys) end end |