Automattic\WooCommerce\Internal\Logging

RemoteLogger::log()privateWC 1.0

Send the log to the remote logging service.

Метод класса: RemoteLogger{}

Хуков нет.

Возвращает

true|false.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->log( $level, $message, $context );
$level(строка) (обязательный)
Log level (e.g., 'error', 'warning', 'info').
$message(строка) (обязательный)
Log message to be recorded.
$context(массив) (обязательный)
Additional information for log handlers, such as 'backtrace', 'tags', 'extra', and 'error'.

Код RemoteLogger::log() WC 9.3.3

private function log( $level, $message, $context ) {
	try {
		$log_data = $this->get_formatted_log( $level, $message, $context );

		// Ensure the log data is valid.
		if ( ! is_array( $log_data ) || empty( $log_data['message'] ) || empty( $log_data['feature'] ) ) {
			return false;
		}

		$body = array(
			'params' => wp_json_encode( $log_data ),
		);

		WC_Rate_Limiter::set_rate_limit( self::RATE_LIMIT_ID, self::RATE_LIMIT_DELAY );

		if ( $this->is_dev_or_local_environment() ) {
			return false;
		}

		$response = wp_safe_remote_post(
			self::LOG_ENDPOINT,
			array(
				'body'     => wp_json_encode( $body ),
				'timeout'  => 2,
				'headers'  => array(
					'Content-Type' => 'application/json',
				),
				'blocking' => false,
			)
		);

		if ( is_wp_error( $response ) ) {
			throw new \Exception( $response->get_error_message() );
		}

		return true;
	} catch ( \Exception $e ) {
		// Log the error locally if the remote logging fails.
		error_log( 'Remote logging failed: ' . $e->getMessage() ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
		return false;
	}
}