class Proxi::RequestResponseLogging
Log all incoming and outgoing traffic to files under ‘/tmp`
For example:
Proxi.tcp_server(...).subscribe(RequestResponseLogging.new).call
The in and outgoing traffic will be captured per connection in ‘/tmp/proxi.1.in` and `/tmp/proxi.1.out`; `/tmp/proxi.2.in`, etc.
Public Class Methods
new(dir: Dir.tmpdir, name: "proxi")
click to toggle source
# File lib/proxi/listeners.rb, line 16 def initialize(dir: Dir.tmpdir, name: "proxi") @dir = dir @name = name @count = 0 @mutex = Mutex.new end
Public Instance Methods
log_name(num, suffix)
click to toggle source
# File lib/proxi/listeners.rb, line 34 def log_name(num, suffix) '%s/%s.%d.%s' % [@dir, @name, num, suffix] end
new_connection(connection)
click to toggle source
# File lib/proxi/listeners.rb, line 23 def new_connection(connection) count = @mutex.synchronize { @count += 1 } in_fd = File.open(log_name(count, "in"), 'w') out_fd = File.open(log_name(count, "out"), 'w') connection .on(:data_in) { |_, data| in_fd.write(data) ; in_fd.flush } .on(:data_out) { |_, data| out_fd.write(data) ; out_fd.flush } .on(:end_connection) { in_fd.close ; out_fd.close } end