mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 18:34:30 -04:00
Merge pull request #8169 from turbo124/v5-develop
Improve sentry logging in selfhost + hosted
This commit is contained in:
commit
4fb80f98dd
@ -36,6 +36,7 @@ use Symfony\Component\Console\Exception\CommandNotFoundException;
|
|||||||
use Symfony\Component\Debug\Exception\FatalThrowableError;
|
use Symfony\Component\Debug\Exception\FatalThrowableError;
|
||||||
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
|
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
use League\Flysystem\UnableToCreateDirectory;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
class Handler extends ExceptionHandler
|
class Handler extends ExceptionHandler
|
||||||
@ -54,6 +55,30 @@ class Handler extends ExceptionHandler
|
|||||||
NotFoundHttpException::class,
|
NotFoundHttpException::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
protected $selfHostDontReport = [
|
||||||
|
FilePermissionsFailure::class,
|
||||||
|
PDOException::class,
|
||||||
|
MaxAttemptsExceededException::class,
|
||||||
|
CommandNotFoundException::class,
|
||||||
|
ValidationException::class,
|
||||||
|
ModelNotFoundException::class,
|
||||||
|
NotFoundHttpException::class,
|
||||||
|
UnableToCreateDirectory::class,
|
||||||
|
GuzzleHttp\Exception\ConnectException::class,
|
||||||
|
Symfony\Component\Process\Exception\RuntimeException::class,
|
||||||
|
InvalidArgumentException::class,
|
||||||
|
RuntimeException::class,
|
||||||
|
];
|
||||||
|
|
||||||
|
protected $hostedDontReport = [
|
||||||
|
PDOException::class,
|
||||||
|
MaxAttemptsExceededException::class,
|
||||||
|
CommandNotFoundException::class,
|
||||||
|
ValidationException::class,
|
||||||
|
ModelNotFoundException::class,
|
||||||
|
NotFoundHttpException::class,
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of the inputs that are never flashed for validation exceptions.
|
* A list of the inputs that are never flashed for validation exceptions.
|
||||||
*
|
*
|
||||||
@ -100,11 +125,11 @@ class Handler extends ExceptionHandler
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
if ($this->validException($exception)) {
|
if ($this->validException($exception) && $this->sentryShouldReport($exception)) {
|
||||||
Integration::captureUnhandledException($exception);
|
Integration::captureUnhandledException($exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif (app()->bound('sentry') && $this->shouldReport($exception)) {
|
} elseif (app()->bound('sentry')) {
|
||||||
Integration::configureScope(function (Scope $scope): void {
|
Integration::configureScope(function (Scope $scope): void {
|
||||||
if (auth()->guard('contact') && auth()->guard('contact')->user() && auth()->guard('contact')->user()->company->account->report_errors) {
|
if (auth()->guard('contact') && auth()->guard('contact')->user() && auth()->guard('contact')->user()->company->account->report_errors) {
|
||||||
$scope->setUser([
|
$scope->setUser([
|
||||||
@ -121,7 +146,7 @@ class Handler extends ExceptionHandler
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if ($this->validException($exception)) {
|
if ($this->validException($exception) && $this->sentryShouldReport($exception)) {
|
||||||
Integration::captureUnhandledException($exception);
|
Integration::captureUnhandledException($exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,6 +183,23 @@ class Handler extends ExceptionHandler
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the exception is in the "do not report" list.
|
||||||
|
*
|
||||||
|
* @param \Throwable $e
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function sentryShouldReport(Throwable $e)
|
||||||
|
{
|
||||||
|
if(Ninja::isHosted())
|
||||||
|
$dontReport = array_merge($this->hostedDontReport, $this->internalDontReport);
|
||||||
|
else
|
||||||
|
$dontReport = array_merge($this->selfHostDontReport, $this->internalDontReport);
|
||||||
|
|
||||||
|
return is_null(Arr::first($dontReport, fn ($type) => $e instanceof $type));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Render an exception into an HTTP response.
|
* Render an exception into an HTTP response.
|
||||||
*
|
*
|
||||||
@ -194,7 +236,6 @@ class Handler extends ExceptionHandler
|
|||||||
} elseif ($exception instanceof MethodNotAllowedHttpException && $request->expectsJson()) {
|
} elseif ($exception instanceof MethodNotAllowedHttpException && $request->expectsJson()) {
|
||||||
return response()->json(['message'=>'Method not supported for this route'], 404);
|
return response()->json(['message'=>'Method not supported for this route'], 404);
|
||||||
} elseif ($exception instanceof ValidationException && $request->expectsJson()) {
|
} elseif ($exception instanceof ValidationException && $request->expectsJson()) {
|
||||||
// nlog($exception->validator->getMessageBag());
|
|
||||||
return response()->json(['message' => 'The given data was invalid.', 'errors' => $exception->validator->getMessageBag()], 422);
|
return response()->json(['message' => 'The given data was invalid.', 'errors' => $exception->validator->getMessageBag()], 422);
|
||||||
} elseif ($exception instanceof RelationNotFoundException && $request->expectsJson()) {
|
} elseif ($exception instanceof RelationNotFoundException && $request->expectsJson()) {
|
||||||
return response()->json(['message' => "Relation `{$exception->relation}` is not a valid include."], 400);
|
return response()->json(['message' => "Relation `{$exception->relation}` is not a valid include."], 400);
|
||||||
|
@ -40,7 +40,8 @@ class SchedulerService
|
|||||||
private function client_statement()
|
private function client_statement()
|
||||||
{
|
{
|
||||||
$query = Client::query()
|
$query = Client::query()
|
||||||
->where('company_id', $this->scheduler->company_id);
|
->where('company_id', $this->scheduler->company_id)
|
||||||
|
->where('is_deleted',0);
|
||||||
|
|
||||||
//Email only the selected clients
|
//Email only the selected clients
|
||||||
if(count($this->scheduler->parameters['clients']) >= 1)
|
if(count($this->scheduler->parameters['clients']) >= 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user