1
0
Fork 0
mirror of synced 2024-10-01 01:37:56 +13:00

Merge pull request #5577 from appwrite/feat-improve-logs

Feat: Improve logs
This commit is contained in:
Christy Jacob 2023-05-25 00:52:47 +05:30 committed by GitHub
commit 7d19fe87f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 16 deletions

View file

@ -85,6 +85,8 @@ Server::setResource('queueForFunctions', function (Registry $register) {
); );
}, ['register']); }, ['register']);
Server::setResource('log', fn() => new Log());
Server::setResource('logger', function ($register) { Server::setResource('logger', function ($register) {
return $register->get('logger'); return $register->get('logger');
}, ['register']); }, ['register']);
@ -119,16 +121,15 @@ $server
->error() ->error()
->inject('error') ->inject('error')
->inject('logger') ->inject('logger')
->action(function (Throwable $error, Logger $logger) { ->inject('log')
->action(function (Throwable $error, Logger $logger, Log $log) {
$version = App::getEnv('_APP_VERSION', 'UNKNOWN'); $version = App::getEnv('_APP_VERSION', 'UNKNOWN');
if ($error instanceof PDOException) { if ($error instanceof PDOException) {
throw $error; throw $error;
} }
if ($error->getCode() >= 500 || $error->getCode() === 0) { if ($logger && ($error->getCode() >= 500 || $error->getCode() === 0)) {
$log = new Log();
$log->setNamespace("appwrite-worker"); $log->setNamespace("appwrite-worker");
$log->setServer(\gethostname()); $log->setServer(\gethostname());
$log->setVersion($version); $log->setVersion($version);
@ -146,7 +147,8 @@ $server
$isProduction = App::getEnv('_APP_ENV', 'development') === 'production'; $isProduction = App::getEnv('_APP_ENV', 'development') === 'production';
$log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING); $log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING);
$logger->addLog($log); $responseCode = $logger->addLog($log);
Console::info('Usage stats log pushed with status code: ' . $responseCode);
} }
Console::error('[Error] Type: ' . get_class($error)); Console::error('[Error] Type: ' . get_class($error));

View file

@ -20,6 +20,7 @@ use Utopia\Database\Permission;
use Utopia\Database\Query; use Utopia\Database\Query;
use Utopia\Database\Role; use Utopia\Database\Role;
use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\Authorization;
use Utopia\Logger\Log;
use Utopia\Queue\Server; use Utopia\Queue\Server;
Authorization::disable(); Authorization::disable();
@ -27,6 +28,7 @@ Authorization::setDefaultStatus(false);
Server::setResource('execute', function () { Server::setResource('execute', function () {
return function ( return function (
Log $log,
Func $queueForFunctions, Func $queueForFunctions,
Database $dbForProject, Database $dbForProject,
Client $statsd, Client $statsd,
@ -40,10 +42,16 @@ Server::setResource('execute', function () {
string $eventData = null, string $eventData = null,
string $executionId = null, string $executionId = null,
) { ) {
$error = null; // Used to re-throw at the end to trigger Logger (Sentry)
$errorCode = 0;
$user ??= new Document(); $user ??= new Document();
$functionId = $function->getId(); $functionId = $function->getId();
$deploymentId = $function->getAttribute('deployment', ''); $deploymentId = $function->getAttribute('deployment', '');
$log->addExtra('functionId', $functionId);
$log->addExtra('projectId', $project->getId());
/** Check if deployment exists */ /** Check if deployment exists */
$deployment = $dbForProject->getDocument('deployments', $deploymentId); $deployment = $dbForProject->getDocument('deployments', $deploymentId);
@ -153,10 +161,8 @@ Server::setResource('execute', function () {
->setAttribute('statusCode', $th->getCode()) ->setAttribute('statusCode', $th->getCode())
->setAttribute('stderr', $th->getMessage()); ->setAttribute('stderr', $th->getMessage());
Console::error($th->getTraceAsString()); $error = $th->getMessage();
Console::error($th->getFile()); $errorCode = $th->getCode();
Console::error($th->getLine());
Console::error($th->getMessage());
} }
$execution = $dbForProject->updateDocument('executions', $executionId, $execution); $execution = $dbForProject->updateDocument('executions', $executionId, $execution);
@ -217,6 +223,10 @@ Server::setResource('execute', function () {
->setParam('networkResponseSize', 0) ->setParam('networkResponseSize', 0)
->submit(); ->submit();
} }
if (!empty($error)) {
throw new Exception($error, $errorCode);
}
}; };
}); });
@ -226,7 +236,8 @@ $server->job()
->inject('queueForFunctions') ->inject('queueForFunctions')
->inject('statsd') ->inject('statsd')
->inject('execute') ->inject('execute')
->action(function (Message $message, Database $dbForProject, Func $queueForFunctions, Client $statsd, callable $execute) { ->inject('log')
->action(function (Message $message, Database $dbForProject, Func $queueForFunctions, Client $statsd, callable $execute, Log $log) {
$payload = $message->getPayload() ?? []; $payload = $message->getPayload() ?? [];
if (empty($payload)) { if (empty($payload)) {
@ -269,6 +280,7 @@ $server->job()
} }
Console::success('Iterating function: ' . $function->getAttribute('name')); Console::success('Iterating function: ' . $function->getAttribute('name'));
$execute( $execute(
log: $log,
statsd: $statsd, statsd: $statsd,
dbForProject: $dbForProject, dbForProject: $dbForProject,
project: $project, project: $project,
@ -297,6 +309,7 @@ $server->job()
$execution = new Document($payload['execution'] ?? []); $execution = new Document($payload['execution'] ?? []);
$user = new Document($payload['user'] ?? []); $user = new Document($payload['user'] ?? []);
$execute( $execute(
log: $log,
project: $project, project: $project,
function: $function, function: $function,
dbForProject: $dbForProject, dbForProject: $dbForProject,
@ -313,6 +326,7 @@ $server->job()
break; break;
case 'schedule': case 'schedule':
$execute( $execute(
log: $log,
project: $project, project: $project,
function: $function, function: $function,
dbForProject: $dbForProject, dbForProject: $dbForProject,

12
composer.lock generated
View file

@ -2509,16 +2509,16 @@
}, },
{ {
"name": "utopia-php/queue", "name": "utopia-php/queue",
"version": "0.5.2", "version": "0.5.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/queue.git", "url": "https://github.com/utopia-php/queue.git",
"reference": "310271c5cd477541208d7fa74a4dea64df8e04a0" "reference": "8e8b6cb27172713fe5d8b7b092ce68516caf129a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/queue/zipball/310271c5cd477541208d7fa74a4dea64df8e04a0", "url": "https://api.github.com/repos/utopia-php/queue/zipball/8e8b6cb27172713fe5d8b7b092ce68516caf129a",
"reference": "310271c5cd477541208d7fa74a4dea64df8e04a0", "reference": "8e8b6cb27172713fe5d8b7b092ce68516caf129a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2564,9 +2564,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/queue/issues", "issues": "https://github.com/utopia-php/queue/issues",
"source": "https://github.com/utopia-php/queue/tree/0.5.2" "source": "https://github.com/utopia-php/queue/tree/0.5.3"
}, },
"time": "2023-03-07T08:54:10+00:00" "time": "2023-05-24T19:06:04+00:00"
}, },
{ {
"name": "utopia-php/registry", "name": "utopia-php/registry",

View file

@ -483,6 +483,8 @@ services:
- _APP_USAGE_STATS - _APP_USAGE_STATS
- DOCKERHUB_PULL_USERNAME - DOCKERHUB_PULL_USERNAME
- DOCKERHUB_PULL_PASSWORD - DOCKERHUB_PULL_PASSWORD
- _APP_LOGGING_CONFIG
- _APP_LOGGING_PROVIDER
appwrite-worker-mails: appwrite-worker-mails:
entrypoint: worker-mails entrypoint: worker-mails