class Protobuf::Rpc::Middleware::Logger::Instrumenter
TODO: Replace this with ActiveSupport::Notifications and log subscribers TODO: Consider adopting Rails-style logging so we can track serialization time as well as ActiveRecord time, etc.:
Started GET "/" for 127.0.0.1 at 2014-02-12 09:40:29 -0700 Processing by ReleasesController#index as HTML Rendered releases/_release.html.erb (0.0ms) Rendered releases/_release.html.erb (0.0ms) Rendered releases/_release.html.erb (0.0ms) Rendered releases/_release.html.erb (0.0ms) Rendered releases/index.html.erb within layouts/application (11.0ms) Completed 200 OK in 142ms (Views: 117.6ms | ActiveRecord: 1.7ms)
Attributes
env[R]
Public Instance Methods
flush(env)
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 48 def flush(env) ::Protobuf::Logging.logger.info { to_s(env) } end
start()
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 52 def start @start_time = ::Time.now.utc end
stop()
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 56 def stop @end_time = ::Time.now.utc end
to_s(env)
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 60 def to_s(env) @env = env [ "[SRV]", env.client_host, env.worker_id, rpc, sizes, elapsed_time, @end_time.try(:iso8601), ].compact.join(' - ') end
Private Instance Methods
elapsed_time()
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 76 def elapsed_time (@start_time && @end_time ? "#{(@end_time - @start_time).round(4)}s" : nil) end
rpc()
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 80 def rpc env.service_name && env.method_name ? "#{env.service_name}##{env.method_name}" : nil end
sizes()
click to toggle source
# File lib/protobuf/rpc/middleware/logger.rb, line 84 def sizes if env.encoded_response? "#{env.encoded_request.size}B/#{env.encoded_response.size}B" else "#{env.encoded_request.size}B/-" end end