$event * @return array */ public static function record( array $event ): array { if ( ! CheckoutTraceConfig::is_enabled() ) { return []; } $sanitized = CheckoutTraceEventSanitizer::sanitize( $event ); $log_line = wp_json_encode( $sanitized ); if ( function_exists( 'wc_get_logger' ) && false !== $log_line ) { self::write_to_wc_logger( (string) ( $sanitized['status'] ?? 'info' ), $log_line ); } if ( ! CheckoutTraceRepository::append( $sanitized ) ) { return []; } return $sanitized; } /** * @return array */ public static function build_admin_payload( int $limit = 50 ): array { $max_events = CheckoutTraceConfig::max_events(); $limit = $limit > 0 ? min( $limit, $max_events ) : $max_events; return [ 'enabled' => CheckoutTraceConfig::is_enabled(), 'consoleEnabled' => CheckoutTraceConfig::is_console_enabled(), 'maxEvents' => $max_events, 'storage' => CheckoutMonitoringSchema::status(), 'events' => CheckoutTraceRepository::recent( $limit ), 'summary' => CheckoutTraceRepository::summary( $limit ), ]; } private static function write_to_wc_logger( string $status, string $message ): void { switch ( $status ) { case 'error': case 'failed': case 'critical': Logger::error( 'checkout-trace', $message ); break; case 'warning': Logger::warning( 'checkout-trace', $message ); break; case 'debug': Logger::debug( 'checkout-trace', $message ); break; default: Logger::info( 'checkout-trace', $message ); break; } } }