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,
) -> CustomResult<RequestContent, errors::ConnectorError> {
let connector_req = stripe::StripeCreditTransferSourceRequest::try_from(req)?;
Ok(RequestContent::FormUrlEncoded(Box::new(connector_req)))
}
@ -850,6 +849,7 @@ impl
}
_ => {
let connector_req = stripe::PaymentIntentRequest::try_from(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 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
.change_context(errors::VaultError::GenerateFingerprintFailed);
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();
url.push_str(consts::LOCKER_HEALTH_CALL_PATH);
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
.change_context(errors::HealthCheckLockerError::FailedToCallLocker)?
.map_err(|_| {
@ -126,7 +126,7 @@ impl HealthCheckInterface for app::AppState {
&self,
) -> CustomResult<HealthState, errors::HealthCheckOutGoing> {
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
.map_err(|err| errors::HealthCheckOutGoing::OutGoingFailed {
message: err.to_string(),

View File

@ -746,7 +746,7 @@ pub async fn get_payment_method_from_hs_locker<'a>(
.await
.change_context(errors::VaultError::FetchPaymentMethodFailed)
.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
.change_context(errors::VaultError::FetchPaymentMethodFailed)
.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 =
payment_methods::mk_add_locker_request_hs(jwekey, locker, payload, locker_choice)
.await?;
let response = services::call_connector_api(state, request)
let response = services::call_connector_api(state, request, "add_card_to_hs_locker")
.await
.change_context(errors::VaultError::SaveCardFailed);
@ -864,7 +864,7 @@ pub async fn get_card_from_hs_locker<'a>(
.await
.change_context(errors::VaultError::FetchCardFailed)
.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
.change_context(errors::VaultError::FetchCardFailed)
.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")?;
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
.change_context(errors::ApiErrorResponse::InternalServerError)
.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_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
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))
.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);
let applepay_response =

View File

@ -379,11 +379,13 @@ where
};
let request_url = request.url.clone();
let request_method = request.method;
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();
logger::debug!(connector_response=?response);
logger::info!(raw_connector_request=?masked_request_body);
logger::info!(raw_connector_response=?response);
let status_code = response
.as_ref()
.map(|i| {
@ -563,16 +565,34 @@ where
pub async fn call_connector_api(
state: &AppState,
request: Request,
flow_name: &str,
) -> CustomResult<Result<types::Response, types::Response>, errors::ApiClientError> {
let current_time = Instant::now();
let headers = request.headers.clone();
let url = request.url.clone();
let response = state
.api_client
.send_request(state, request, None, true)
.await;
let elapsed_time = current_time.elapsed();
logger::info!(request_time=?elapsed_time);
match response.as_ref() {
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
}
@ -583,7 +603,7 @@ pub async fn send_request(
request: Request,
option_timeout_secs: Option<u64>,
) -> 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)
.into_report()

View File

@ -35,7 +35,12 @@ where
match connector_request {
Some(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);
match response {
Ok(body) => {

View File

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

View File

@ -27,7 +27,7 @@ impl VerifyConnector for connector::Paypal {
})?
.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
.change_context(errors::ApiErrorResponse::InternalServerError)?;