PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 3.4.3
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v3.4.3
3.4.3 3.4.2 3.4.1 3.4.0 3.3.9 3.3.8 3.3.7 3.3.6 3.3.5 3.3.4 3.3.3 3.3.2 3.3.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 All 196 releases
convertkit / vendor / wordpress / mcp-adapter / includes / Infrastructure / Observability / ErrorLogMcpObservabilityHandler.php

ErrorLogMcpObservabilityHandler.php in Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages 3.4.3, at vendor/wordpress/mcp-adapter/includes/Infrastructure/Observability/ErrorLogMcpObservabilityHandler.php

80 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * ErrorLogMcpObservabilityHandler class for logging MCP observability metrics to PHP error log.
4 *
5 * @package McpAdapter
6 */
7
8 declare( strict_types=1 );
9
10 namespace WP\MCP\Infrastructure\Observability;
11
12 /**
13 * Class ErrorLogMcpObservabilityHandler
14 *
15 * This class handles observability tracking by writing metrics to the PHP error log.
16 * This provides a simple way to track MCP metrics without external dependencies.
17 *
18 * @package WP\MCP\ObservabilityHandlers
19 */
20 class ErrorLogMcpObservabilityHandler implements Contracts\McpObservabilityHandlerInterface {
21
22 use McpObservabilityHelperTrait;
23
24 /**
25 * Emit a countable event for tracking with optional timing data.
26 *
27 * @param string $event The event name to record.
28 * @param array $tags Optional tags to attach to the event.
29 * @param float|null $duration_ms Optional duration in milliseconds for timing measurements.
30 *
31 * @return void
32 */
33 public function record_event( string $event, array $tags = array(), ?float $duration_ms = null ): void {
34 $formatted_event = self::format_metric_name( $event );
35 $merged_tags = self::merge_tags( $tags );
36 $formatted_tags = self::format_tags( $merged_tags );
37
38 // Include timing data if provided
39 if ( null !== $duration_ms ) {
40 $log_message = sprintf(
41 '[MCP Observability] EVENT %s %.2fms %s',
42 $formatted_event,
43 $duration_ms,
44 $formatted_tags
45 );
46 } else {
47 $log_message = sprintf(
48 '[MCP Observability] EVENT %s %s',
49 $formatted_event,
50 $formatted_tags
51 );
52 }
53
54 error_log( $log_message ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
55 }
56
57 /**
58 * Format tags array into a readable string for logging.
59 *
60 * @param array $tags The tags to format.
61 *
62 * @return string
63 */
64 private static function format_tags( array $tags ): string {
65 if ( empty( $tags ) ) {
66 return '';
67 }
68
69 $formatted = array_map(
70 static function ( $key, $value ) {
71 return sprintf( '%s=%s', $key, $value );
72 },
73 array_keys( $tags ),
74 array_values( $tags )
75 );
76
77 return '[' . implode( ',', $formatted ) . ']';
78 }
79 }
80