self::$log_file_name . ( is_null( $feature ) ? '' : '-' . $feature ) ); self::$logger->log( $level, $message, $handler ); } /** * Helper for Logging API requests. * * @param string $url The URL of the request. * @param string[] $args The Arguments of the request. * @param string $level The default level/context of the message to be logged. * * @return void */ public static function log_request( $url, $args, $level = 'debug' ) { unset( $args['headers'] ); $method = $args['method'] ?? 'POST'; $data = ! empty( $args['body'] ) ? $args['body'] : '--- EMPTY STRING ---'; $data = is_array( $data ) ? wp_json_encode( $data ) : $data; self::log( "{$method} Request: " . $url . "\n\n" . $data . "\n", $level ); } /** * Helper for Logging API responses. * * @param array|WP_Error $response The body of the response. * @param string $level The default level/context of the message to be logged. * * @return void */ public static function log_response( $response, $level = 'debug' ) { if ( is_wp_error( $response ) ) { $level = 'error'; $data = $response->get_error_code() . ': ' . $response->get_error_message(); } else { // Collecting response data. $status = wp_remote_retrieve_response_code( $response ); $message = wp_remote_retrieve_response_message( $response ); $body = wp_remote_retrieve_body( $response ); $headers = wp_remote_retrieve_headers( $response ); if ( is_object( $headers ) ) { $headers = $headers->getAll(); } $data = 'Status: ' . $status . ' ' . $message . "\n\n" . 'Headers: ' . wp_json_encode( $headers ) . "\n\n" . 'Body: ' . $body; } self::log( 'Response: ' . "\n\n" . $data . "\n", $level ); } }