refactor(router): Add IO level application logs (#4042)

This commit is contained in:
Sahkal Poddar
2024-03-14 12:24:41 +05:30
committed by GitHub
parent 74345212ed
commit ad17cc7383
10 changed files with 58 additions and 22 deletions

View File

@ -150,7 +150,6 @@ impl
_connectors: &settings::Connectors, _connectors: &settings::Connectors,
) -> CustomResult<RequestContent, errors::ConnectorError> { ) -> CustomResult<RequestContent, errors::ConnectorError> {
let connector_req = stripe::StripeCreditTransferSourceRequest::try_from(req)?; let connector_req = stripe::StripeCreditTransferSourceRequest::try_from(req)?;
Ok(RequestContent::FormUrlEncoded(Box::new(connector_req))) Ok(RequestContent::FormUrlEncoded(Box::new(connector_req)))
} }
@ -850,6 +849,7 @@ impl
} }
_ => { _ => {
let connector_req = stripe::PaymentIntentRequest::try_from(req)?; let connector_req = stripe::PaymentIntentRequest::try_from(req)?;
Ok(RequestContent::FormUrlEncoded(Box::new(connector_req))) Ok(RequestContent::FormUrlEncoded(Box::new(connector_req)))
} }
} }

View File

@ -137,7 +137,7 @@ async fn call_to_locker_for_fingerprint(
let jwekey = state.conf.jwekey.get_inner(); let jwekey = state.conf.jwekey.get_inner();
let request = generate_fingerprint_request(jwekey, locker, payload, locker_choice).await?; let request = generate_fingerprint_request(jwekey, locker, payload, locker_choice).await?;
let response = services::call_connector_api(state, request) let response = services::call_connector_api(state, request, "call_locker_to_get_fingerprint")
.await .await
.change_context(errors::VaultError::GenerateFingerprintFailed); .change_context(errors::VaultError::GenerateFingerprintFailed);
let jwe_body: encryption::JweBody = response let jwe_body: encryption::JweBody = response

View File

@ -71,7 +71,7 @@ impl HealthCheckInterface for app::AppState {
let mut url = locker.host_rs.to_owned(); let mut url = locker.host_rs.to_owned();
url.push_str(consts::LOCKER_HEALTH_CALL_PATH); url.push_str(consts::LOCKER_HEALTH_CALL_PATH);
let request = services::Request::new(services::Method::Get, &url); let request = services::Request::new(services::Method::Get, &url);
services::call_connector_api(self, request) services::call_connector_api(self, request, "health_check_for_locker")
.await .await
.change_context(errors::HealthCheckLockerError::FailedToCallLocker)? .change_context(errors::HealthCheckLockerError::FailedToCallLocker)?
.map_err(|_| { .map_err(|_| {
@ -126,7 +126,7 @@ impl HealthCheckInterface for app::AppState {
&self, &self,
) -> CustomResult<HealthState, errors::HealthCheckOutGoing> { ) -> CustomResult<HealthState, errors::HealthCheckOutGoing> {
let request = services::Request::new(services::Method::Get, consts::OUTGOING_CALL_URL); let request = services::Request::new(services::Method::Get, consts::OUTGOING_CALL_URL);
services::call_connector_api(self, request) services::call_connector_api(self, request, "outgoing_health_check")
.await .await
.map_err(|err| errors::HealthCheckOutGoing::OutGoingFailed { .map_err(|err| errors::HealthCheckOutGoing::OutGoingFailed {
message: err.to_string(), message: err.to_string(),

View File

@ -746,7 +746,7 @@ pub async fn get_payment_method_from_hs_locker<'a>(
.await .await
.change_context(errors::VaultError::FetchPaymentMethodFailed) .change_context(errors::VaultError::FetchPaymentMethodFailed)
.attach_printable("Making get payment method request failed")?; .attach_printable("Making get payment method request failed")?;
let response = services::call_connector_api(state, request) let response = services::call_connector_api(state, request, "add_card_to_locker")
.await .await
.change_context(errors::VaultError::FetchPaymentMethodFailed) .change_context(errors::VaultError::FetchPaymentMethodFailed)
.attach_printable("Failed while executing call_connector_api for get_card"); .attach_printable("Failed while executing call_connector_api for get_card");
@ -798,7 +798,7 @@ pub async fn call_to_locker_hs<'a>(
let request = let request =
payment_methods::mk_add_locker_request_hs(jwekey, locker, payload, locker_choice) payment_methods::mk_add_locker_request_hs(jwekey, locker, payload, locker_choice)
.await?; .await?;
let response = services::call_connector_api(state, request) let response = services::call_connector_api(state, request, "add_card_to_hs_locker")
.await .await
.change_context(errors::VaultError::SaveCardFailed); .change_context(errors::VaultError::SaveCardFailed);
@ -864,7 +864,7 @@ pub async fn get_card_from_hs_locker<'a>(
.await .await
.change_context(errors::VaultError::FetchCardFailed) .change_context(errors::VaultError::FetchCardFailed)
.attach_printable("Making get card request failed")?; .attach_printable("Making get card request failed")?;
let response = services::call_connector_api(state, request) let response = services::call_connector_api(state, request, "get_card_from_locker")
.await .await
.change_context(errors::VaultError::FetchCardFailed) .change_context(errors::VaultError::FetchCardFailed)
.attach_printable("Failed while executing call_connector_api for get_card"); .attach_printable("Failed while executing call_connector_api for get_card");
@ -916,7 +916,7 @@ pub async fn delete_card_from_hs_locker<'a>(
.attach_printable("Making delete card request failed")?; .attach_printable("Making delete card request failed")?;
if !locker.mock_locker { if !locker.mock_locker {
let response = services::call_connector_api(state, request) let response = services::call_connector_api(state, request, "delete_card_from_locker")
.await .await
.change_context(errors::ApiErrorResponse::InternalServerError) .change_context(errors::ApiErrorResponse::InternalServerError)
.attach_printable("Failed while executing call_connector_api for delete card"); .attach_printable("Failed while executing call_connector_api for delete card");

View File

@ -259,7 +259,12 @@ async fn create_applepay_session_token(
apple_pay_merchant_cert, apple_pay_merchant_cert,
apple_pay_merchant_cert_key, apple_pay_merchant_cert_key,
)?; )?;
let response = services::call_connector_api(state, applepay_session_request).await; let response = services::call_connector_api(
state,
applepay_session_request,
"create_apple_pay_session_token",
)
.await;
// logging the error if present in session call response // logging the error if present in session call response
log_session_response_if_error(&response); log_session_response_if_error(&response);

View File

@ -46,7 +46,12 @@ pub async fn verify_merchant_creds_for_applepay(
.add_certificate_key(Some(key_data)) .add_certificate_key(Some(key_data))
.build(); .build();
let response = services::call_connector_api(&state, apple_pay_merch_verification_req).await; let response = services::call_connector_api(
&state,
apple_pay_merch_verification_req,
"verify_merchant_creds_for_applepay",
)
.await;
utils::log_applepay_verification_response_if_error(&response); utils::log_applepay_verification_response_if_error(&response);
let applepay_response = let applepay_response =

View File

@ -379,11 +379,13 @@ where
}; };
let request_url = request.url.clone(); let request_url = request.url.clone();
let request_method = request.method; let request_method = request.method;
let current_time = Instant::now(); let current_time = Instant::now();
let response = call_connector_api(state, request).await; let response =
call_connector_api(state, request, "execute_connector_processing_step")
.await;
let external_latency = current_time.elapsed().as_millis(); let external_latency = current_time.elapsed().as_millis();
logger::debug!(connector_response=?response); logger::info!(raw_connector_request=?masked_request_body);
logger::info!(raw_connector_response=?response);
let status_code = response let status_code = response
.as_ref() .as_ref()
.map(|i| { .map(|i| {
@ -563,16 +565,34 @@ where
pub async fn call_connector_api( pub async fn call_connector_api(
state: &AppState, state: &AppState,
request: Request, request: Request,
flow_name: &str,
) -> CustomResult<Result<types::Response, types::Response>, errors::ApiClientError> { ) -> CustomResult<Result<types::Response, types::Response>, errors::ApiClientError> {
let current_time = Instant::now(); let current_time = Instant::now();
let headers = request.headers.clone();
let url = request.url.clone();
let response = state let response = state
.api_client .api_client
.send_request(state, request, None, true) .send_request(state, request, None, true)
.await; .await;
let elapsed_time = current_time.elapsed(); match response.as_ref() {
logger::info!(request_time=?elapsed_time); Ok(resp) => {
let status_code = resp.status().as_u16();
let elapsed_time = current_time.elapsed();
logger::info!(
headers=?headers,
url=?url,
status_code=?status_code,
flow=?flow_name,
elapsed_time=?elapsed_time
);
}
Err(err) => {
logger::info!(
call_connector_api_error=?err
);
}
}
handle_response(response).await handle_response(response).await
} }
@ -583,7 +603,7 @@ pub async fn send_request(
request: Request, request: Request,
option_timeout_secs: Option<u64>, option_timeout_secs: Option<u64>,
) -> CustomResult<reqwest::Response, errors::ApiClientError> { ) -> CustomResult<reqwest::Response, errors::ApiClientError> {
logger::debug!(method=?request.method, headers=?request.headers, payload=?request.body, ?request); logger::info!(method=?request.method, headers=?request.headers, payload=?request.body, ?request);
let url = reqwest::Url::parse(&request.url) let url = reqwest::Url::parse(&request.url)
.into_report() .into_report()

View File

@ -35,7 +35,12 @@ where
match connector_request { match connector_request {
Some(request) => { Some(request) => {
logger::debug!(connector_request=?request); logger::debug!(connector_request=?request);
let response = services::api::call_connector_api(state, request).await; let response = services::api::call_connector_api(
state,
request,
"execute_connector_processing_step",
)
.await;
logger::debug!(connector_response=?response); logger::debug!(connector_response=?response);
match response { match response {
Ok(body) => { Ok(body) => {

View File

@ -127,9 +127,10 @@ pub trait VerifyConnector {
})? })?
.ok_or(errors::ApiErrorResponse::InternalServerError)?; .ok_or(errors::ApiErrorResponse::InternalServerError)?;
let response = services::call_connector_api(&state.to_owned(), request) let response =
.await services::call_connector_api(&state.to_owned(), request, "verify_connector_request")
.change_context(errors::ApiErrorResponse::InternalServerError)?; .await
.change_context(errors::ApiErrorResponse::InternalServerError)?;
match response { match response {
Ok(_) => Ok(services::ApplicationResponse::StatusOk), Ok(_) => Ok(services::ApplicationResponse::StatusOk),

View File

@ -27,7 +27,7 @@ impl VerifyConnector for connector::Paypal {
})? })?
.ok_or(errors::ApiErrorResponse::InternalServerError)?; .ok_or(errors::ApiErrorResponse::InternalServerError)?;
let response = services::call_connector_api(&state.to_owned(), request) let response = services::call_connector_api(&state.to_owned(), request, "get_access_token")
.await .await
.change_context(errors::ApiErrorResponse::InternalServerError)?; .change_context(errors::ApiErrorResponse::InternalServerError)?;