class Logfoo::Context
Constants
- THREAD_CONTEXT
Attributes
level[R]
name[R]
thread_id[R]
timed[R]
Public Class Methods
new(app, name, context = nil)
click to toggle source
# File lib/logfoo/context.rb, line 7 def initialize(app, name, context = nil) @app = app @name = name @level = Logfoo::DEBUG @context = context || {} @timed = Timed.new(self) end
Public Instance Methods
[]=(k,v)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/logfoo/context.rb, line 51 def add(level, message, progname, &block) lv = Logfoo::LEVELS[level] if lv public_send(lv.downcase, message, &block) end end
context(keys = nil) { || ... }
click to toggle source
# 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
level=(level)
click to toggle source
# File lib/logfoo/context.rb, line 15 def level=(level) @level = level.to_i end
Private Instance Methods
build_line(level_id, message, payload)
click to toggle source
# File lib/logfoo/context.rb, line 90 def build_line(level_id, message, payload) if message.is_a?(Exception) ErrLine.build( logger_name: @name, exception: message, payload: payload, level: level_id ) else LogLine.build( logger_name: @name, message: message, payload: payload, level: level_id ) end end