PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.8
Booking for Appointments and Events Calendar – Amelia v2.4.8
2.4.9 2.4.8 2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / Services / Logger / RequestIdProcessor.php
ameliabooking / src / Infrastructure / Services / Logger Last commit date
JsonLineFormatter.php 1 week ago LogDirectoryManager.php 1 week ago LogRetentionCleanupService.php 1 week ago LogSanitizer.php 1 week ago MonologChannelLogger.php 1 week ago MonologLoggerFactory.php 1 week ago RequestIdProcessor.php 1 week ago
RequestIdProcessor.php
57 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\Services\Logger;
4
5 /**
6 * Class RequestIdProcessor
7 *
8 * Tags every record with a per-request correlation ID (and multisite blog ID when available).
9 * Invokable Monolog processor (callable); does not implement ProcessorInterface to avoid
10 * Strauss-broken phpstan Record imports on CI.
11 *
12 * @package AmeliaBooking\Infrastructure\Services\Logger
13 */
14 class RequestIdProcessor
15 {
16 private static ?string $requestId = null;
17
18 /**
19 * @param array $record
20 *
21 * @return array
22 */
23 public function __invoke(array $record): array
24 {
25 $record['extra']['request_id'] = self::get();
26
27 if (function_exists('get_current_blog_id')) {
28 $record['extra']['blog_id'] = get_current_blog_id();
29 }
30
31 return $record;
32 }
33
34 public static function get(): string
35 {
36 if (self::$requestId !== null) {
37 return self::$requestId;
38 }
39
40 $header = $_SERVER['HTTP_X_REQUEST_ID'] ?? null;
41
42 if (is_string($header) && preg_match('/^[A-Za-z0-9\-]{1,128}$/', $header)) {
43 return self::$requestId = $header;
44 }
45
46 return self::$requestId = bin2hex(random_bytes(16));
47 }
48
49 /**
50 * Reset cached ID (for tests / long-running workers between jobs).
51 */
52 public static function reset(): void
53 {
54 self::$requestId = null;
55 }
56 }
57