class Gallus::Log
Attributes
level[RW]
name[RW]
output[R]
serialization[RW]
Public Class Methods
[](name)
click to toggle source
# File lib/gallus/log.rb, line 11 def [](name) configure(name) end
configure(name = '', &block)
click to toggle source
# File lib/gallus/log.rb, line 7 def configure(name = '', &block) Repository.get_or_create_logger(name, &block) end
current_thread_context() { |current ||= {}| ... }
click to toggle source
# File lib/gallus/log.rb, line 40 def current_thread_context yield (Thread.current[:log_context] ||= {}) end
define_log_methods!(log_level)
click to toggle source
# File lib/gallus/log.rb, line 19 def define_log_methods!(log_level) Level.each do |level| method_name = level.name.downcase remove_method(method_name) if method_defined?(method_name) if level >= log_level define_method(method_name) do |message, payload = {}| log(level, message, payload) end else define_method(method_name) do |message, payload = {}| # supressed... end end end end
delete(name)
click to toggle source
# File lib/gallus/log.rb, line 15 def delete(name) Repository.delete_with_children(name) end
global_context() { |global_context| ... }
click to toggle source
# File lib/gallus/log.rb, line 36 def global_context @@global_context_mutex.synchronize { yield @@global_context } end
new(parent, name) { |self| ... }
click to toggle source
# File lib/gallus/log.rb, line 52 def initialize(parent, name, &block) @parent, @name = parent, name.to_s if parent @output = (@parent.output || []).dup @serialization = @parent.serialization self.level = @parent.level end @output ||= [] @serialization ||= Serialization::Inspect.new yield self if block_given? end
root()
click to toggle source
# File lib/gallus/log.rb, line 44 def root @@root end
Public Instance Methods
context()
click to toggle source
# File lib/gallus/log.rb, line 74 def context @context ||= {} end
level=(level)
click to toggle source
# File lib/gallus/log.rb, line 67 def level=(level) level = level.is_a?(Level) ? level : Level[level.to_s] return if @level == level self.class.class_eval { define_log_methods!(level) } @level = level end
Private Instance Methods
log(level, message, payload = {}, &block)
click to toggle source
# File lib/gallus/log.rb, line 88 def log(level, message, payload = {}, &block) payload = merged_context.merge(payload) serialized_payload = serialization.call(Payload.new(payload).to_h) event = Event.new(@name, level, message.to_s, serialized_payload.empty? ? nil : serialized_payload) output.each { |out| out.call(event) } end
merged_context()
click to toggle source
# File lib/gallus/log.rb, line 80 def merged_context {}.tap do |merged| self.class.global_context { |ctx| merged.merge!(ctx) } self.class.current_thread_context { |ctx| merged.merge!(ctx) } merged.merge!(context) end end