|
22 | 22 | use Utopia\Balancer\Group; |
23 | 23 | use Utopia\Balancer\Option; |
24 | 24 | use Utopia\CLI\Console; |
| 25 | +use Utopia\DSN\DSN; |
25 | 26 | use Utopia\Fetch\Client; |
26 | 27 | use Utopia\Http\Adapter\Swoole\Server; |
27 | 28 | use Utopia\Http\Http; |
|
57 | 58 | return $state; |
58 | 59 | }); |
59 | 60 |
|
| 61 | +/** |
| 62 | + * Create logger for cloud logging |
| 63 | + */ |
60 | 64 | $register->set('logger', function () { |
61 | 65 | $providerName = Http::getEnv('OPR_PROXY_LOGGING_PROVIDER', ''); |
62 | 66 | $providerConfig = Http::getEnv('OPR_PROXY_LOGGING_CONFIG', ''); |
| 67 | + |
| 68 | + try { |
| 69 | + $loggingProvider = new DSN($providerConfig ?? ''); |
| 70 | + |
| 71 | + $providerName = $loggingProvider->getScheme(); |
| 72 | + $providerConfig = match ($providerName) { |
| 73 | + 'sentry' => ['key' => $loggingProvider->getPassword(), 'projectId' => $loggingProvider->getUser() ?? '', 'host' => 'https://' . $loggingProvider->getHost()], |
| 74 | + 'logowl' => ['ticket' => $loggingProvider->getUser() ?? '', 'host' => $loggingProvider->getHost()], |
| 75 | + default => ['key' => $loggingProvider->getHost()], |
| 76 | + }; |
| 77 | + } catch (Throwable) { |
| 78 | + $configChunks = \explode(";", ($providerConfig ?? '')); |
| 79 | + |
| 80 | + $providerConfig = match ($providerName) { |
| 81 | + 'sentry' => ['key' => $configChunks[0], 'projectId' => $configChunks[1] ?? '', 'host' => '',], |
| 82 | + 'logowl' => ['ticket' => $configChunks[0] ?? '', 'host' => ''], |
| 83 | + default => ['key' => $providerConfig], |
| 84 | + }; |
| 85 | + } |
| 86 | + |
63 | 87 | $logger = null; |
64 | 88 |
|
65 | | - if (!empty($providerName) && !empty($providerConfig) && Logger::hasProvider($providerName)) { |
| 89 | + if (!empty($providerName) && is_array($providerConfig) && Logger::hasProvider($providerName)) { |
66 | 90 | $adapter = match ($providerName) { |
67 | | - 'sentry' => new Sentry($providerConfig), |
68 | | - 'raygun' => new Raygun($providerConfig), |
69 | | - 'logowl' => new LogOwl($providerConfig), |
70 | | - 'appsignal' => new AppSignal($providerConfig), |
| 91 | + 'sentry' => new Sentry($providerConfig['projectId'] ?? '', $providerConfig['key'] ?? '', $providerConfig['host'] ?? ''), |
| 92 | + 'logowl' => new LogOwl($providerConfig['ticket'] ?? '', $providerConfig['host'] ?? ''), |
| 93 | + 'raygun' => new Raygun($providerConfig['key'] ?? ''), |
| 94 | + 'appsignal' => new AppSignal($providerConfig['key'] ?? ''), |
71 | 95 | default => throw new Exception('Provider "' . $providerName . '" not supported.') |
72 | 96 | }; |
73 | 97 |
|
|
0 commit comments