From 03031805a9dfb6d459dcda3c203b31ca98db2296 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 26 Aug 2024 13:33:51 +0400 Subject: [PATCH 1/4] feat: add logs --- app/init.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/init.php b/app/init.php index f6719a2e18..b6648ff383 100644 --- a/app/init.php +++ b/app/init.php @@ -750,6 +750,7 @@ $register->set('logger', function () { $providerName = System::getEnv('_APP_LOGGING_PROVIDER', ''); $providerConfig = System::getEnv('_APP_LOGGING_CONFIG', ''); + var_dump($providerConfig); try { $loggingProvider = new DSN($providerConfig ?? ''); @@ -759,6 +760,7 @@ $register->set('logger', function () { 'logowl' => ['ticket' => $loggingProvider->getUser() ?? '', 'host' => $loggingProvider->getHost()], default => ['key' => $loggingProvider->getHost()], }; + var_dump("Here1"); } catch (Throwable) { // Fallback for older Appwrite versions up to 1.5.x that use _APP_LOGGING_PROVIDER and _APP_LOGGING_CONFIG environment variables $configChunks = \explode(";", $providerConfig); @@ -768,8 +770,11 @@ $register->set('logger', function () { 'logowl' => ['ticket' => $configChunks[0] ?? '', 'host' => ''], default => ['key' => $providerConfig], }; + var_dump("Here2"); } + var_dump($providerConfig); + if (empty($providerName) || empty($providerConfig)) { return; } From 4f8e6d700578803e4d5a569f631ecbefdb2adde3 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 26 Aug 2024 14:42:48 +0400 Subject: [PATCH 2/4] feat: update experimental logging provider --- app/controllers/general.php | 27 ++++++++++++++++++--------- app/init.php | 3 ++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 6662519e5b..9826d5d725 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -32,6 +32,7 @@ use Utopia\Database\Validator\Authorization; use Utopia\Domains\Domain; use Utopia\DSN\DSN; use Utopia\Locale\Locale; +use Utopia\Logger\Adapter\Sentry; use Utopia\Logger\Log; use Utopia\Logger\Log\User; use Utopia\Logger\Logger; @@ -754,16 +755,24 @@ App::error() $providerName = System::getEnv('_APP_EXPERIMENT_LOGGING_PROVIDER', ''); $providerConfig = System::getEnv('_APP_EXPERIMENT_LOGGING_CONFIG', ''); - if (!(empty($providerName) || empty($providerConfig))) { - if (!Logger::hasProvider($providerName)) { - throw new Exception("Logging provider not supported. Logging is disabled"); - } + try { + $loggingProvider = new DSN($providerConfig ?? ''); + $providerName = $loggingProvider->getScheme(); + + if (!empty($providerName) && $providerName === 'sentry') { + $key = $loggingProvider->getPassword(); + $projectId = $loggingProvider->getUser() ?? ''; + $host = 'https://' . $loggingProvider->getHost(); - $classname = '\\Utopia\\Logger\\Adapter\\' . \ucfirst($providerName); - $adapter = new $classname($providerConfig); - $logger = new Logger($adapter); - $logger->setSample(0.04); - $publish = true; + $adapter = new Sentry($projectId, $key, $host); + $logger = new Logger($adapter); + $logger->setSample(0.04); + $publish = true; + } else { + throw new \Exception('Invalid experimental logging provider'); + } + } catch (\Throwable $th) { + Console::warning('Failed to initialize logging provider: ' . $th->getMessage()); } } diff --git a/app/init.php b/app/init.php index b6648ff383..e5721a0c5f 100644 --- a/app/init.php +++ b/app/init.php @@ -761,8 +761,9 @@ $register->set('logger', function () { default => ['key' => $loggingProvider->getHost()], }; var_dump("Here1"); - } catch (Throwable) { + } catch (Throwable $th) { // Fallback for older Appwrite versions up to 1.5.x that use _APP_LOGGING_PROVIDER and _APP_LOGGING_CONFIG environment variables + Console::warning('Using deprecated logging configuration. Please update your configuration to use DSN format.' . $th->getMessage()); $configChunks = \explode(";", $providerConfig); $providerConfig = match ($providerName) { From d2c9ce65e3652b088aa4d049d496cbd5a16a7dcd Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 26 Aug 2024 14:56:30 +0400 Subject: [PATCH 3/4] feat: remove var_dumps --- app/init.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/init.php b/app/init.php index e5721a0c5f..ede1446868 100644 --- a/app/init.php +++ b/app/init.php @@ -750,7 +750,6 @@ $register->set('logger', function () { $providerName = System::getEnv('_APP_LOGGING_PROVIDER', ''); $providerConfig = System::getEnv('_APP_LOGGING_CONFIG', ''); - var_dump($providerConfig); try { $loggingProvider = new DSN($providerConfig ?? ''); @@ -760,7 +759,6 @@ $register->set('logger', function () { 'logowl' => ['ticket' => $loggingProvider->getUser() ?? '', 'host' => $loggingProvider->getHost()], default => ['key' => $loggingProvider->getHost()], }; - var_dump("Here1"); } catch (Throwable $th) { // Fallback for older Appwrite versions up to 1.5.x that use _APP_LOGGING_PROVIDER and _APP_LOGGING_CONFIG environment variables Console::warning('Using deprecated logging configuration. Please update your configuration to use DSN format.' . $th->getMessage()); @@ -771,11 +769,8 @@ $register->set('logger', function () { 'logowl' => ['ticket' => $configChunks[0] ?? '', 'host' => ''], default => ['key' => $providerConfig], }; - var_dump("Here2"); } - var_dump($providerConfig); - if (empty($providerName) || empty($providerConfig)) { return; } From e8125b407026a71f01e33565f9836fff7c1bff7a Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 26 Aug 2024 15:05:50 +0400 Subject: [PATCH 4/4] feat: linter --- app/controllers/general.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 9826d5d725..8defeb72f6 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -755,10 +755,10 @@ App::error() $providerName = System::getEnv('_APP_EXPERIMENT_LOGGING_PROVIDER', ''); $providerConfig = System::getEnv('_APP_EXPERIMENT_LOGGING_CONFIG', ''); - try { + try { $loggingProvider = new DSN($providerConfig ?? ''); $providerName = $loggingProvider->getScheme(); - + if (!empty($providerName) && $providerName === 'sentry') { $key = $loggingProvider->getPassword(); $projectId = $loggingProvider->getUser() ?? '';