envylabs/faraday-detailed_logger

Using a custom Logger object errs

Closed this issue · 4 comments

From @djberg96 in #6 (see comment):

log = Logger.new(some_file)
log.formatter = proc do |severity, datetime, progname, msg|
  msg = msg.sub /Bearer(.*?)\"/, 'Bearer [FILTERED]"'
  "[#{datetime}] - #{severity} -- : #{msg}"
end

client = OAuth2::Client.new(<creds>)
client.connection.response(:detailed_logger, log)
/Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/faraday-detailed_logger-2.1.2/lib/faraday/detailed_logger/tagged_logging.rb:70:in `tagged': undefined method `tagged' for #<Proc:0x007fc99c3564a8> (NoMethodError)
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/faraday-detailed_logger-2.1.2/lib/faraday/detailed_logger/middleware.rb:55:in `call'
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/faraday-0.9.2/lib/faraday/adapter/net_http.rb:56:in `call'
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/faraday-0.9.2/lib/faraday/request/url_encoded.rb:15:in `call'
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/faraday-0.9.2/lib/faraday/rack_builder.rb:139:in `build_response'
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/faraday-0.9.2/lib/faraday/connection.rb:377:in `run_request'
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/oauth2-1.3.1/lib/oauth2/client.rb:99:in `request'
	from /Users/djberge/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/oauth2-1.3.1/lib/oauth2/access_token.rb:107:in `request'

Hmm .. I'm not able to reproduce this behavior. The spec below passes without issue:

  context "with tags configured" do
    it "logs prepends the tags to each line" do
      logger.formatter = proc do |severity, datetime, progname, msg|
        msg = msg.sub /Bearer(.*?)\"/, 'Bearer [FILTERED]"'
        "[#{datetime}] - #{severity} -- : #{msg}\n"
      end
      connection(logger, %w[ebi]).get("/temaki")
      log.rewind
      log.readlines.each do |line|
        expect(line).to match(/: \[ebi\] /)
      end
    end
  end

When that seemed to pass, I thought that maybe it errs if the logger given didn't support tagged, but the library already provides a shim for that with the Faraday::DetailedLogger::TaggedLogging module. That module should automatically wrap whatever logger is given if the given logger doesn't respond to tagged.

Are you able to reproduce this issue?

I'll try to come up with a standalone script. It might have something to do with oauth2 I suppose.

I haven't been able to replicate, so feel free to close this. If anything, it's probably an oauth2 issue.

Alright. No problem. Thanks for trying! If you run into it again, feel free to reopen.