lib/httpx/loggable.rb in httpx-0.3.1 vs lib/httpx/loggable.rb in httpx-0.4.0
- old
+ new
@@ -1,24 +1,49 @@
# frozen_string_literal: true
module HTTPX
module Loggable
COLORS = {
- black: 30,
- red: 31,
- green: 32,
- yellow: 33,
- blue: 34,
+ black: 30,
+ red: 31,
+ green: 32,
+ yellow: 33,
+ blue: 34,
magenta: 35,
- cyan: 36,
- white: 37,
+ cyan: 36,
+ white: 37,
}.freeze
def log(level: @options.debug_level, label: "", color: nil, &msg)
return unless @options.debug
return unless @options.debug_level >= level
+
+ debug_stream = @options.debug
+
message = (+label << msg.call << "\n")
- message = "\e[#{COLORS[color]}m#{message}\e[0m" if color && @options.debug.isatty
- @options.debug << message
+ message = "\e[#{COLORS[color]}m#{message}\e[0m" if debug_stream.respond_to?(:isatty) && debug_stream.isatty
+ debug_stream << message
+ end
+
+ if !Exception.instance_methods.include?(:full_message)
+
+ def log_exception(ex, level: @options.debug_level, label: "", color: nil)
+ return unless @options.debug
+ return unless @options.debug_level >= level
+
+ message = +"#{ex.message} (#{ex.class})"
+ message << "\n" << ex.backtrace.join("\n") unless ex.backtrace.nil?
+ log(level: level, label: label, color: color) { message }
+ end
+
+ else
+
+ def log_exception(ex, level: @options.debug_level, label: "", color: nil)
+ return unless @options.debug
+ return unless @options.debug_level >= level
+
+ log(level: level, label: label, color: color) { ex.full_message }
+ end
+
end
end
end