Skip to content

Commit a7d79f7

Browse files
committed
TPCF-27209 - CAPI logs should for request complete should include the response time
Add time taken, request_method and request_full path to complete request log
1 parent cc0728d commit a7d79f7

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
lines changed

lib/cloud_controller/logs/request_logs.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ def start_request(request_id, env)
2626
@incomplete_requests.store(request_id, env)
2727
end
2828

29-
def complete_request(request_id, status)
29+
def complete_request(request_id, status, env, time_taken)
3030
return if @incomplete_requests.delete(request_id).nil?
31-
32-
@logger.info("Completed #{status} vcap-request-id: #{request_id}",
33-
{ status_code: status })
31+
request = ActionDispatch::Request.new(env)
32+
@logger.info("Completed #{status} vcap-request-id: #{request_id} Response Time: #{time_taken}",
33+
{ status_code: status,
34+
request_method: request.request_method,
35+
request_fullpath: request.filtered_path })
3436
end
3537

3638
def log_incomplete_requests

middleware/request_logs.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ def initialize(app, request_logs)
99
def call(env)
1010
request_id = env['cf.request_id']
1111
@request_logs.start_request(request_id, env)
12+
start_time = Time.now
1213

1314
status, headers, body = @app.call(env)
1415

15-
@request_logs.complete_request(request_id, status)
16+
time_taken = Time.now - start_time
17+
@request_logs.complete_request(request_id, status, env, time_taken)
1618

1719
[status, headers, body]
1820
end

spec/unit/lib/cloud_controller/logs/request_logs_spec.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module VCAP::CloudController::Logs
99
let(:fake_fullpath) { 'fullpath' }
1010
let(:fake_request) { double('request', request_method: 'request_method', ip: fake_ip, filtered_path: 'filtered_path', fullpath: fake_fullpath) }
1111
let(:request_id) { 'ID' }
12+
let(:time_taken) { 30 }
1213
let(:env) { { 'cf.user_guid' => 'user-guid' } }
1314
let(:status) { 200 }
1415

@@ -45,14 +46,14 @@ module VCAP::CloudController::Logs
4546
end
4647

4748
it 'logs the completion of the request' do
48-
request_logs.complete_request(request_id, status)
49-
expect(logger).to have_received(:info).with(/Completed 200 vcap-request-id: ID/, { status_code: 200 })
49+
request_logs.complete_request(request_id, status, env, time_taken)
50+
expect(logger).to have_received(:info).with(/Completed 200 vcap-request-id: ID Response Time: 30/, { request_method: "request_method", request_fullpath: "filtered_path", status_code: 200 })
5051
end
5152
end
5253

5354
context 'without a matching start request' do
5455
it 'does not log the completion of the request' do
55-
request_logs.complete_request(request_id, status)
56+
request_logs.complete_request(request_id, status, env, time_taken)
5657
expect(logger).not_to have_received(:info)
5758
end
5859
end

0 commit comments

Comments
 (0)