module Ougai module Logging attr_accessor :with_fields def debug(message = nil, ex = nil, data = nil, &block) return true if level > Logger::DEBUG args = block ? yield : [message, ex, data] append(Logger::DEBUG, args) end def info(message = nil, ex = nil, data = nil, &block) return true if level > Logger::INFO args = block ? yield : [message, ex, data] append(Logger::INFO, args) end def warn(message = nil, ex = nil, data = nil, &block) return true if level > Logger::WARN args = block ? yield : [message, ex, data] append(Logger::WARN, args) end def error(message = nil, ex = nil, data = nil, &block) return true if level > Logger::ERROR args = block ? yield : [message, ex, data] append(Logger::ERROR, args) end def fatal(message = nil, ex = nil, data = nil, &block) return true if level > Logger::FATAL args = block ? yield : [message, ex, data] append(Logger::FATAL, args) end def unknown(message = nil, ex = nil, data = nil, &block) args = block ? yield : [message, ex, data] append(Logger::UNKNOWN, args) end def child(fields = {}) ChildLogger.new(self, fields) end def chain(severity, args, fields) raise NotImplementedError end protected def append(severity, args) raise NotImplementedError end def merge_fields(base_data, new_data) base_data.merge(new_data) do |_, base_val, new_val| if base_val.is_a?(Array) and new_val.is_a?(Array) (base_val + new_val).uniq else new_val end end end end end