lib/ougai.rb in ougai-0.2.0 vs lib/ougai.rb in ougai-0.3.0

- old
+ new

@@ -5,36 +5,39 @@ require 'json' module Ougai class Logger < Logger attr_accessor :default_message, :app_name + attr_accessor :ex_key, :ex_trace_indent def initialize(*args) super(*args) @default_message = 'No message' @app_name = File.basename($0, ".rb") @hostname = Socket.gethostname + @ex_key = :err + @ex_trace_indent = 2 @formatter = create_formatter end - def debug(message, ex = nil, data = {}) + def debug(message, ex = nil, data = nil) super(to_item(message, ex, data)) end - def info(message, ex = nil, data = {}) + def info(message, ex = nil, data = nil) super(to_item(message, ex, data)) end - def warn(message, ex = nil, data = {}) + def warn(message, ex = nil, data = nil) super(to_item(message, ex, data)) end - def error(message, ex = nil, data = {}) + def error(message, ex = nil, data = nil) super(to_item(message, ex, data)) end - def fatal(message, ex = nil, data = {}) + def fatal(message, ex = nil, data = nil) super(to_item(message, ex, data)) end protected @@ -53,37 +56,49 @@ private def to_item(msg, ex, data) item = {} - if ex.nil? && msg.is_a?(Exception) - item[:msg] = msg.to_s - item[:err] = serialize_ex(msg) - elsif ex - item[:msg] = msg - if ex.is_a?(Hash) + if ex.nil? # 1 arg + if msg.is_a?(Exception) + item[:msg] = msg.to_s + item[@ex_key] = serialize_ex(msg) + elsif msg.is_a?(Hash) + item[:msg] = @default_message unless msg.key?(:msg) + item.merge!(msg) + else + item[:msg] = msg.to_s + end + elsif data.nil? # 2 args + if ex.is_a?(Exception) + item[:msg] = msg.to_s + item[@ex_key] = serialize_ex(ex) + elsif ex.is_a?(Hash) item.merge!(ex) - elsif ex.is_a?(Exception) - item[:err] = serialize_ex(ex) - item.merge!(data) + if msg.is_a?(Exception) + item[@ex_key] = serialize_ex(msg) + else + item[:msg] = msg.to_s + end end - elsif msg.is_a?(Hash) - item[:msg] = @default_message unless msg.key?(:msg) - item.merge!(msg) - else - item[:msg] = msg - item.merge!(data) + elsif msg # 3 args + item[@ex_key] = serialize_ex(ex) if ex.is_a?(Exception) + item.merge!(data) if data.is_a?(Hash) + item[:msg] = msg.to_s + else # No args + item[:msg] = @default_message end item end def serialize_ex(ex) err = { name: ex.class.name, message: ex.to_s } if ex.backtrace - err[:stack] = ex.backtrace.join("\n ") + sp = "\n" + ' ' * @ex_trace_indent + err[:stack] = ex.backtrace.join(sp) end err end def to_level(severity)