PluginProbe
ZIP AI – AI Website Builder & AI Agent (Beta) / 0.0.8
ZIP AI – AI Website Builder & AI Agent (Beta) v0.0.8
0.0.10 0.0.9 trunk 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8
zip-ai / lib / mcp-adapter / includes / Infrastructure / Observability / ErrorLogMcpObservabilityHandler.php

ErrorLogMcpObservabilityHandler.php in ZIP AI – AI Website Builder & AI Agent (Beta) 0.0.8, at lib/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