withRouting( web: __DIR__ . '/../routes/web.php', api: __DIR__ . '/../routes/api.php', commands: __DIR__ . '/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', ) ->withMiddleware(function (Middleware $middleware) { $middleware->append(ProxyMiddleware::class); $middleware->alias([ 'has' => EnsureUserHasPermissions::class, 'scope' => CheckForAnyScope::class, 'api.admin' => AdminApi::class, ]); $middleware->web([ SetLocale::class, ImpersonateMiddleware::class, ]); }) ->withEvents(discover: [ __DIR__ . '/../app/Extensions', __DIR__ . '/../app/Listeners', ]) ->withExceptions(function (Exceptions $exceptions) { $exceptions->report(function (Exception $exception) { try { if (!config('settings.debug', false)) { return; } DebugLog::create([ 'type' => 'exception', 'context' => [ 'message' => $exception->getMessage(), 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'trace' => $exception->getTraceAsString(), ], ]); } catch (Exception $e) { // Do nothing throw $e; } }); // #region agent log $exceptions->report(function (\Throwable $e) { try { $reqPath = ''; try { $reqPath = request()?->path() ?? ''; } catch (\Throwable) { } $msg = $e->getMessage(); $file = $e->getFile(); $trace = $e->getTraceAsString(); $normFile = str_replace('\\', '/', $file); $normTrace = str_replace('\\', '/', $trace); $relevant = str_contains(strtolower((string) $reqPath), 'statistics') || str_contains(strtolower((string) $reqPath), 'livewire') || str_contains(strtolower($msg), 'statistics.blade') || str_contains(strtolower($msg), 'unable to locate a class or view for component') || str_contains($msg, 'proxmox::') || str_contains($normTrace, 'Servers/Proxmox/Livewire/Statistics') || str_contains($normFile, 'Servers/Proxmox/'); if (!$relevant) { return; } $payload = [ 'sessionId' => 'd17155', 'runId' => 'pre-fix', 'hypothesisId' => 'H_exc', 'timestamp' => (int) round(microtime(true) * 1000), 'location' => 'bootstrap/app.php:withExceptions.report', 'message' => 'statistics_related_exception', 'data' => [ 'class' => $e::class, 'msg' => $msg, 'file' => $file, 'line' => $e->getLine(), 'reqPath' => $reqPath, ], ]; file_put_contents( base_path('debug-d17155.log'), json_encode($payload, JSON_UNESCAPED_SLASHES) . "\n", FILE_APPEND | LOCK_EX ); } catch (\Throwable) { } }); // #endregion })->create();