Module: HTTPX::Loggable

Included in:
Connection, Connection::HTTP1, Connection::HTTP2, ErrorResponse, Resolver::Resolver, Session, TCP, UDP
Defined in:
lib/httpx/loggable.rb

Constant Summary collapse

COLORS =
{
  black: 30,
  red: 31,
  green: 32,
  yellow: 33,
  blue: 34,
  magenta: 35,
  cyan: 36,
  white: 37,
}.freeze
USE_DEBUG_LOG =
ENV.key?("HTTPX_DEBUG")

Instance Method Summary collapse

Instance Method Details

#log(level: @options.debug_level, color: nil, debug_level: @options.debug_level, debug: @options.debug, &msg) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/httpx/loggable.rb', line 18

def log(
  level: @options.debug_level,
  color: nil,
  debug_level: @options.debug_level,
  debug: @options.debug,
  &msg
)
  return unless debug_level >= level

  debug_stream = debug || ($stderr if USE_DEBUG_LOG)

  return unless debug_stream

  klass = self.class

  until (class_name = klass.name)
    klass = klass.superclass
  end

  message = +"(pid:#{Process.pid} tid:#{Thread.current.object_id}, self:#{class_name}##{object_id}) "
  message << msg.call << "\n"
  message = "\e[#{COLORS[color]}m#{message}\e[0m" if color && debug_stream.respond_to?(:isatty) && debug_stream.isatty
  debug_stream << message
end

#log_exception(ex, level: @options.debug_level, color: nil, debug_level: @options.debug_level, debug: @options.debug) ⇒ Object



43
44
45
# File 'lib/httpx/loggable.rb', line 43

def log_exception(ex, level: @options.debug_level, color: nil, debug_level: @options.debug_level, debug: @options.debug)
  log(level: level, color: color, debug_level: debug_level, debug: debug) { ex.full_message }
end

#log_redact(text, should_redact = @options.debug_redact) ⇒ Object



47
48
49
50
51
# File 'lib/httpx/loggable.rb', line 47

def log_redact(text, should_redact = @options.debug_redact)
  return text.to_s unless should_redact

  "[REDACTED]"
end