Add flag to send logs to logger
This commit is contained in:
parent
7cce033682
commit
c34dc4dae0
4 changed files with 43 additions and 14 deletions
|
@ -209,6 +209,7 @@ return [
|
||||||
'name' => Exception::USER_AUTH_METHOD_UNSUPPORTED,
|
'name' => Exception::USER_AUTH_METHOD_UNSUPPORTED,
|
||||||
'description' => 'The requested authentication method is either disabled or unsupported. Please check the supported authentication methods in the Appwrite console.',
|
'description' => 'The requested authentication method is either disabled or unsupported. Please check the supported authentication methods in the Appwrite console.',
|
||||||
'code' => 501,
|
'code' => 501,
|
||||||
|
'log' => false,
|
||||||
],
|
],
|
||||||
Exception::USER_PHONE_ALREADY_EXISTS => [
|
Exception::USER_PHONE_ALREADY_EXISTS => [
|
||||||
'name' => Exception::USER_PHONE_ALREADY_EXISTS,
|
'name' => Exception::USER_PHONE_ALREADY_EXISTS,
|
||||||
|
@ -764,4 +765,12 @@ return [
|
||||||
'description' => 'An error occurred on the provider\'s side. Please try again later.',
|
'description' => 'An error occurred on the provider\'s side. Please try again later.',
|
||||||
'code' => 400,
|
'code' => 400,
|
||||||
],
|
],
|
||||||
|
|
||||||
|
/** Health */
|
||||||
|
Exception::QUEUE_SIZE_EXCEEDS => [
|
||||||
|
'name' => Exception::QUEUE_SIZE_EXCEEDS,
|
||||||
|
'description' => 'Queue size threshold hit.',
|
||||||
|
'code' => 503,
|
||||||
|
'log' => false
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -355,7 +355,7 @@ App::get('/v1/health/queue/webhooks')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -382,7 +382,7 @@ App::get('/v1/health/queue/logs')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -409,7 +409,7 @@ App::get('/v1/health/queue/certificates')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -436,7 +436,7 @@ App::get('/v1/health/queue/builds')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -464,7 +464,7 @@ App::get('/v1/health/queue/databases')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -491,7 +491,7 @@ App::get('/v1/health/queue/deletes')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -518,7 +518,7 @@ App::get('/v1/health/queue/mails')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -545,7 +545,7 @@ App::get('/v1/health/queue/messaging')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -572,7 +572,7 @@ App::get('/v1/health/queue/migrations')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
@ -599,7 +599,7 @@ App::get('/v1/health/queue/functions')
|
||||||
$size = $client->getQueueSize();
|
$size = $client->getQueueSize();
|
||||||
|
|
||||||
if ($size >= $threshold) {
|
if ($size >= $threshold) {
|
||||||
throw new Exception(Exception::GENERAL_SERVER_ERROR, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
throw new Exception(Exception::QUEUE_SIZE_EXCEEDS, "Queue size threshold hit. Current size is {$size} and threshold is {$threshold}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
$response->dynamic(new Document([ 'size' => $size ]), Response::MODEL_HEALTH_QUEUE);
|
||||||
|
|
|
@ -608,9 +608,14 @@ App::error()
|
||||||
|
|
||||||
$version = App::getEnv('_APP_VERSION', 'UNKNOWN');
|
$version = App::getEnv('_APP_VERSION', 'UNKNOWN');
|
||||||
$route = $utopia->getRoute();
|
$route = $utopia->getRoute();
|
||||||
|
$publishLog = true;
|
||||||
|
|
||||||
|
if ($error instanceof AppwriteException) {
|
||||||
|
$publishLog = $error->getLog();
|
||||||
|
}
|
||||||
|
|
||||||
if ($logger) {
|
if ($logger) {
|
||||||
if ($error->getCode() >= 500 || $error->getCode() === 0) {
|
if (($error->getCode() >= 500 || $error->getCode() === 0) && $publishLog) {
|
||||||
try {
|
try {
|
||||||
/** @var Utopia\Database\Document $user */
|
/** @var Utopia\Database\Document $user */
|
||||||
$user = $utopia->getResource('user');
|
$user = $utopia->getResource('user');
|
||||||
|
|
|
@ -229,12 +229,16 @@ class Exception extends \Exception
|
||||||
public const MIGRATION_PROVIDER_ERROR = 'migration_provider_error';
|
public const MIGRATION_PROVIDER_ERROR = 'migration_provider_error';
|
||||||
|
|
||||||
/** Realtime */
|
/** Realtime */
|
||||||
public const REALTIME_MESSAGE_FORMAT_INVALID = 'realtime_message_format_invalid';
|
public const REALTIME_MESSAGE_FORMAT_INVALID = 'realtime_message_format_invalid';
|
||||||
public const REALTIME_TOO_MANY_MESSAGES = 'realtime_too_many_messages';
|
public const REALTIME_TOO_MANY_MESSAGES = 'realtime_too_many_messages';
|
||||||
public const REALTIME_POLICY_VIOLATION = 'realtime_policy_violation';
|
public const REALTIME_POLICY_VIOLATION = 'realtime_policy_violation';
|
||||||
|
|
||||||
|
/** Health */
|
||||||
|
public const QUEUE_SIZE_EXCEEDS = 'queue_size_exceeds';
|
||||||
|
|
||||||
protected string $type = '';
|
protected string $type = '';
|
||||||
protected array $errors = [];
|
protected array $errors = [];
|
||||||
|
protected bool $log = true;
|
||||||
|
|
||||||
public function __construct(string $type = Exception::GENERAL_UNKNOWN, string $message = null, int $code = null, \Throwable $previous = null)
|
public function __construct(string $type = Exception::GENERAL_UNKNOWN, string $message = null, int $code = null, \Throwable $previous = null)
|
||||||
{
|
{
|
||||||
|
@ -244,6 +248,7 @@ class Exception extends \Exception
|
||||||
if (isset($this->errors[$type])) {
|
if (isset($this->errors[$type])) {
|
||||||
$this->code = $this->errors[$type]['code'];
|
$this->code = $this->errors[$type]['code'];
|
||||||
$this->message = $this->errors[$type]['description'];
|
$this->message = $this->errors[$type]['description'];
|
||||||
|
$this->log = $this->errors[$type]['log'] ?? true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->message = $message ?? $this->message;
|
$this->message = $message ?? $this->message;
|
||||||
|
@ -273,4 +278,14 @@ class Exception extends \Exception
|
||||||
{
|
{
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the log of the exception.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function getLog(): bool
|
||||||
|
{
|
||||||
|
return $this->log;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue