diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 6e29c79..6c95513 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -5,6 +5,7 @@ use App\Models\Userlog; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\QueryException; +use Illuminate\Foundation\Console\AboutCommand; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Event; @@ -12,6 +13,7 @@ use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; +use Opcodes\LogViewer\Facades\LogViewer; use Stevebauman\Location\Facades\Location; class AppServiceProvider extends ServiceProvider @@ -29,31 +31,60 @@ public function register(): void */ public function boot(): void { + // ----------------------------------------------------------------------- + // Pagination + // ----------------------------------------------------------------------- Paginator::useBootstrapFive(); + // ----------------------------------------------------------------------- // log all queries when in not in production + // ----------------------------------------------------------------------- if (! app()->isProduction()) { DB::listen(function ($query) { logger(Str::replaceArray('?', $query->bindings, $query->sql)); }); } - + // ----------------------------------------------------------------------- // log all N+1 queries + // ----------------------------------------------------------------------- Model::preventLazyLoading(); Model::handleLazyLoadingViolationUsing(function ($model, $relation) { Log::warning("N+1 Query detected.\r\n" . sprintf('N+1 Query detected in model %s on relation %s.', get_class($model), $relation)); }); + // ----------------------------------------------------------------------- + // Developer only + // ----------------------------------------------------------------------- Gate::define('developer', function ($user) { return $user->is_developer; }); + // ----------------------------------------------------------------------- + // Log Viewer : grant access (in production) to developer + // ----------------------------------------------------------------------- + LogViewer::auth(function ($request) { + return auth()->user() && auth()->user()->is_developer; + }); + + // ----------------------------------------------------------------------- + // Init application + // ----------------------------------------------------------------------- Event::listen(\Illuminate\Auth\Events\Login::class, function ($event) { $this->setYear(); $this->logUser($event->user); }); + + // ----------------------------------------------------------------------- + // about + // ----------------------------------------------------------------------- + AboutCommand::add('Application', [ + 'Name' => 'L11 - BS 5 - DT 2', + 'author' => 'kreaweb.be', + 'github' => 'https://github.com/MGeurts/laravel-11-bootstrap-5-datatables', + 'license' => 'MIT License', + ]); } private function setYear() diff --git a/composer.json b/composer.json index 468360c..af57f82 100644 --- a/composer.json +++ b/composer.json @@ -6,10 +6,10 @@ "license": "MIT", "require": { "php": "^8.2", - "arcanedev/log-viewer": "^11.0", "khill/lavacharts": "3.1.*", "laravel/framework": "^11.0", "laravel/tinker": "^2.9", + "opcodesio/log-viewer": "^3.8", "spatie/laravel-backup": "^8.6", "stevebauman/location": "^7.2", "yajra/laravel-datatables-oracle": "^11.0" diff --git a/composer.lock b/composer.lock index ce63f1e..cb10561 100644 --- a/composer.lock +++ b/composer.lock @@ -4,146 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2cfd1863e30d48d8e7cbafdfcc5e3814", + "content-hash": "ca51f0bbe6e2c89a71c2c458558f396f", "packages": [ - { - "name": "arcanedev/log-viewer", - "version": "11.0.1", - "source": { - "type": "git", - "url": "https://github.com/ARCANEDEV/LogViewer.git", - "reference": "806498da9792eb34e39df9350a7379a9018eaf5d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ARCANEDEV/LogViewer/zipball/806498da9792eb34e39df9350a7379a9018eaf5d", - "reference": "806498da9792eb34e39df9350a7379a9018eaf5d", - "shasum": "" - }, - "require": { - "arcanedev/support": "^11.0", - "ext-json": "*", - "php": "^8.2", - "psr/log": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "laravel/framework": "^11.0", - "mockery/mockery": "^1.6", - "orchestra/testbench-core": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "11.x-dev" - }, - "laravel": { - "providers": [ - "Arcanedev\\LogViewer\\LogViewerServiceProvider", - "Arcanedev\\LogViewer\\Providers\\DeferredServicesProvider" - ] - } - }, - "autoload": { - "files": [ - "helpers.php" - ], - "psr-4": { - "Arcanedev\\LogViewer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "ARCANEDEV", - "email": "arcanedev.maroc@gmail.com", - "homepage": "https://github.com/arcanedev-maroc", - "role": "Developer" - } - ], - "description": "Provides a Log Viewer for Laravel", - "homepage": "https://github.com/ARCANEDEV/LogViewer", - "keywords": [ - "arcanedev", - "arcanesoft", - "laravel", - "log", - "log viewer", - "log-viewer", - "logviewer" - ], - "support": { - "issues": "https://github.com/ARCANEDEV/LogViewer/issues", - "source": "https://github.com/ARCANEDEV/LogViewer/tree/11.0.1" - }, - "time": "2024-03-18T22:50:40+00:00" - }, - { - "name": "arcanedev/support", - "version": "11.0.0", - "source": { - "type": "git", - "url": "https://github.com/ARCANEDEV/Support.git", - "reference": "dcade384b54d540b63eac152bfdeebc155066524" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ARCANEDEV/Support/zipball/dcade384b54d540b63eac152bfdeebc155066524", - "reference": "dcade384b54d540b63eac152bfdeebc155066524", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^11.0", - "illuminate/support": "^11.0", - "php": "^8.2" - }, - "require-dev": { - "laravel/framework": "^11.0", - "orchestra/testbench-core": "^9.0", - "phpunit/phpunit": "^10.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "11.x-dev" - } - }, - "autoload": { - "files": [ - "helpers.php" - ], - "psr-4": { - "Arcanedev\\Support\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "ARCANEDEV", - "email": "arcanedev.maroc@gmail.com", - "homepage": "https://github.com/arcanedev-maroc" - } - ], - "description": "ARCANEDEV Support Helpers", - "homepage": "https://github.com/ARCANEDEV/Support", - "keywords": [ - "arcanedev", - "arcanesoft", - "laravel", - "support" - ], - "support": { - "issues": "https://github.com/ARCANEDEV/Support/issues", - "source": "https://github.com/ARCANEDEV/Support/tree/11.0.0" - }, - "time": "2024-03-17T21:57:40+00:00" - }, { "name": "brick/math", "version": "0.11.0", @@ -1393,16 +1255,16 @@ }, { "name": "laravel/framework", - "version": "v11.3.0", + "version": "v11.3.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "cbcb0ee3da8c5f98497d9a282609732251a7dd1e" + "reference": "3b87d0767e9cbddec46480d883010ba720e50dea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/cbcb0ee3da8c5f98497d9a282609732251a7dd1e", - "reference": "cbcb0ee3da8c5f98497d9a282609732251a7dd1e", + "url": "https://api.github.com/repos/laravel/framework/zipball/3b87d0767e9cbddec46480d883010ba720e50dea", + "reference": "3b87d0767e9cbddec46480d883010ba720e50dea", "shasum": "" }, "require": { @@ -1594,7 +1456,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-04-09T15:19:11+00:00" + "time": "2024-04-10T15:13:49+00:00" }, { "name": "laravel/prompts", @@ -2790,6 +2652,147 @@ ], "time": "2024-03-06T16:17:14+00:00" }, + { + "name": "opcodesio/log-viewer", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/opcodesio/log-viewer.git", + "reference": "e7af7313a6d06af03ac2ee1a565ccf57bde4f976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opcodesio/log-viewer/zipball/e7af7313a6d06af03ac2ee1a565ccf57bde4f976", + "reference": "e7af7313a6d06af03ac2ee1a565ccf57bde4f976", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0", + "opcodesio/mail-parser": "^0.1.6", + "php": "^8.0" + }, + "conflict": { + "arcanedev/log-viewer": "^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.2", + "itsgoingd/clockwork": "^5.1", + "laravel/pint": "^1.0", + "nunomaduro/collision": "^7.0|^8.0", + "orchestra/testbench": "^7.6|^8.0|^9.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", + "spatie/test-time": "^1.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Required for multi-host support. ^7.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Opcodes\\LogViewer\\LogViewerServiceProvider" + ], + "aliases": { + "LogViewer": "Opcodes\\LogViewer\\Facades\\LogViewer" + } + } + }, + "autoload": { + "psr-4": { + "Opcodes\\LogViewer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arunas Skirius", + "email": "arukomp@gmail.com", + "role": "Developer" + } + ], + "description": "Fast and easy-to-use log viewer for your Laravel application", + "homepage": "https://github.com/opcodesio/log-viewer", + "keywords": [ + "arukompas", + "better-log-viewer", + "laravel", + "log viewer", + "logs", + "opcodesio" + ], + "support": { + "issues": "https://github.com/opcodesio/log-viewer/issues", + "source": "https://github.com/opcodesio/log-viewer/tree/v3.8.0" + }, + "funding": [ + { + "url": "https://www.buymeacoffee.com/arunas", + "type": "custom" + }, + { + "url": "https://github.com/arukompas", + "type": "github" + } + ], + "time": "2024-04-11T14:05:01+00:00" + }, + { + "name": "opcodesio/mail-parser", + "version": "v0.1.6", + "source": { + "type": "git", + "url": "https://github.com/opcodesio/mail-parser.git", + "reference": "639ef31cbd146a63416283e75afce152e13233ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opcodesio/mail-parser/zipball/639ef31cbd146a63416283e75afce152e13233ea", + "reference": "639ef31cbd146a63416283e75afce152e13233ea", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "pestphp/pest": "^2.16", + "symfony/var-dumper": "^6.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Opcodes\\MailParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Arunas Skirius", + "email": "arukomp@gmail.com", + "role": "Developer" + } + ], + "description": "Parse emails without the mailparse extension", + "keywords": [ + "arukompas", + "email", + "email parser", + "mail", + "opcodesio", + "php" + ], + "support": { + "issues": "https://github.com/opcodesio/mail-parser/issues", + "source": "https://github.com/opcodesio/mail-parser/tree/v0.1.6" + }, + "time": "2023-11-19T08:47:43+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.2", @@ -3941,16 +3944,16 @@ }, { "name": "stevebauman/location", - "version": "v7.2.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/stevebauman/location.git", - "reference": "969303a569453b4a00ca43349101c80ea87f65d3" + "reference": "c95c397bf54a109f9cdb335377887047408dc8bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stevebauman/location/zipball/969303a569453b4a00ca43349101c80ea87f65d3", - "reference": "969303a569453b4a00ca43349101c80ea87f65d3", + "url": "https://api.github.com/repos/stevebauman/location/zipball/c95c397bf54a109f9cdb335377887047408dc8bc", + "reference": "c95c397bf54a109f9cdb335377887047408dc8bc", "shasum": "" }, "require": { @@ -4003,9 +4006,9 @@ ], "support": { "issues": "https://github.com/stevebauman/location/issues", - "source": "https://github.com/stevebauman/location/tree/v7.2.0" + "source": "https://github.com/stevebauman/location/tree/v7.2.1" }, - "time": "2024-03-12T15:43:20+00:00" + "time": "2024-04-09T17:05:20+00:00" }, { "name": "symfony/console", @@ -6593,16 +6596,16 @@ "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.13.3", + "version": "v3.13.4", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "241e9bddb04ab42a04a5fe8b2b9654374c864229" + "reference": "00201bcd1eaf9b1d3debddcdc13c219e4835fb61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/241e9bddb04ab42a04a5fe8b2b9654374c864229", - "reference": "241e9bddb04ab42a04a5fe8b2b9654374c864229", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/00201bcd1eaf9b1d3debddcdc13c219e4835fb61", + "reference": "00201bcd1eaf9b1d3debddcdc13c219e4835fb61", "shasum": "" }, "require": { @@ -6661,7 +6664,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.13.3" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.13.4" }, "funding": [ { @@ -6673,7 +6676,7 @@ "type": "github" } ], - "time": "2024-04-04T02:42:49+00:00" + "time": "2024-04-10T09:15:45+00:00" }, { "name": "fakerphp/faker", diff --git a/config/log-viewer.php b/config/log-viewer.php index 5578289..656b46c 100644 --- a/config/log-viewer.php +++ b/config/log-viewer.php @@ -1,146 +1,218 @@ storage_path('logs'), - - /* ----------------------------------------------------------------- - | Log files pattern - | ----------------------------------------------------------------- - */ + /* + |-------------------------------------------------------------------------- + | Log Viewer + |-------------------------------------------------------------------------- + | Log Viewer can be disabled, so it's no longer accessible via browser. + | + */ + + 'enabled' => env('LOG_VIEWER_ENABLED', true), + + 'api_only' => env('LOG_VIEWER_API_ONLY', false), + + 'require_auth_in_production' => true, + + /* + |-------------------------------------------------------------------------- + | Log Viewer Domain + |-------------------------------------------------------------------------- + | You may change the domain where Log Viewer should be active. + | If the domain is empty, all domains will be valid. + | + */ + + 'route_domain' => null, + + /* + |-------------------------------------------------------------------------- + | Log Viewer Route + |-------------------------------------------------------------------------- + | Log Viewer will be available under this URL. + | + */ + + 'route_path' => 'log-viewer', + + /* + |-------------------------------------------------------------------------- + | Back to system URL + |-------------------------------------------------------------------------- + | When set, displays a link to easily get back to this URL. + | Set to `null` to hide this link. + | + | Optional label to display for the above URL. + | + */ + + 'back_to_system_url' => config('app.url', null), + + 'back_to_system_label' => null, // Displayed by default: "Back to {{ app.name }}" + + /* + |-------------------------------------------------------------------------- + | Log Viewer time zone. + |-------------------------------------------------------------------------- + | The time zone in which to display the times in the UI. Defaults to + | the application's timezone defined in config/app.php. + | + */ + + 'timezone' => null, + + /* + |-------------------------------------------------------------------------- + | Log Viewer route middleware. + |-------------------------------------------------------------------------- + | Optional middleware to use when loading the initial Log Viewer page. + | + */ + + 'middleware' => [ + 'web', + \Opcodes\LogViewer\Http\Middleware\AuthorizeLogViewer::class, + ], - 'pattern' => [ - 'prefix' => Filesystem::PATTERN_PREFIX, // 'laravel-' - 'date' => Filesystem::PATTERN_DATE, // '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' - 'extension' => Filesystem::PATTERN_EXTENSION, // '.log' + /* + |-------------------------------------------------------------------------- + | Log Viewer API middleware. + |-------------------------------------------------------------------------- + | Optional middleware to use on every API request. The same API is also + | used from within the Log Viewer user interface. + | + */ + + 'api_middleware' => [ + \Opcodes\LogViewer\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Opcodes\LogViewer\Http\Middleware\AuthorizeLogViewer::class, ], - /* ----------------------------------------------------------------- - | Locale - | ----------------------------------------------------------------- - | Supported locales : - | 'auto', 'ar', 'bg', 'de', 'en', 'es', 'et', 'fa', 'fr', 'hu', 'hy', 'id', 'it', 'ja', 'ko', 'nl', - | 'pl', 'pt-BR', 'ro', 'ru', 'sv', 'th', 'tr', 'zh-TW', 'zh' - */ - - 'locale' => 'auto', - - /* ----------------------------------------------------------------- - | Theme - | ----------------------------------------------------------------- - | Supported themes : - | 'bootstrap-5' - | 'bootstrap-4' - | 'bootstrap-3' - | - | You can make your own theme by adding a folder to the views directory and specifying it here. - */ - - 'theme' => 'bootstrap-5', - - /* ----------------------------------------------------------------- - | Route settings - | ----------------------------------------------------------------- - */ - - 'route' => [ - 'enabled' => true, - - 'attributes' => [ - 'prefix' => '/back/developer/log-monitor', - - 'middleware' => env('ARCANEDEV_LOGVIEWER_MIDDLEWARE') ? explode(',', env('ARCANEDEV_LOGVIEWER_MIDDLEWARE')) : null, + 'api_stateful_domains' => env('LOG_VIEWER_API_STATEFUL_DOMAINS') ? explode(',', env('LOG_VIEWER_API_STATEFUL_DOMAINS')) : null, + + /* + |-------------------------------------------------------------------------- + | Log Viewer Remote hosts. + |-------------------------------------------------------------------------- + | Log Viewer supports viewing Laravel logs from remote hosts. They must + | be running Log Viewer as well. Below you can define the hosts you + | would like to show in this Log Viewer instance. + | + */ + + 'hosts' => [ + 'local' => [ + 'name' => ucfirst(env('APP_ENV', 'local')), ], - 'show' => 'log-viewer::logs.show', + // 'staging' => [ + // 'name' => 'Staging', + // 'host' => 'https://staging.example.com/log-viewer', + // 'auth' => [ // Example of HTTP Basic auth + // 'username' => 'username', + // 'password' => 'password', + // ], + // ], + // + // 'production' => [ + // 'name' => 'Production', + // 'host' => 'https://example.com/log-viewer', + // 'auth' => [ // Example of Bearer token auth + // 'token' => env('LOG_VIEWER_PRODUCTION_TOKEN'), + // ], + // 'headers' => [ + // 'X-Foo' => 'Bar', + // ], + // ], ], - /* ----------------------------------------------------------------- - | Log entries per page - | ----------------------------------------------------------------- - | This defines how many logs & entries are displayed per page. - */ - - 'per-page' => 30, - - /* ----------------------------------------------------------------- - | Download settings - | ----------------------------------------------------------------- - */ - - 'download' => [ - 'prefix' => 'l11-bs5-dt2-', - - 'extension' => 'log', + /* + |-------------------------------------------------------------------------- + | Include file patterns + |-------------------------------------------------------------------------- + | + */ + + 'include_files' => [ + '*.log', + '**/*.log', + + // You can include paths to other log types as well, such as apache, nginx, and more. + '/var/log/httpd/*', + '/var/log/nginx/*', + + // MacOS Apple Silicon logs + '/opt/homebrew/var/log/nginx/*', + '/opt/homebrew/var/log/httpd/*', + '/opt/homebrew/var/log/php-fpm.log', + '/opt/homebrew/var/log/postgres*log', + '/opt/homebrew/var/log/redis*log', + '/opt/homebrew/var/log/supervisor*log', + + // '/absolute/paths/supported', ], - /* ----------------------------------------------------------------- - | Menu settings - | ----------------------------------------------------------------- - */ - - 'menu' => [ - 'filter-route' => 'log-viewer::logs.filter', + /* + |-------------------------------------------------------------------------- + | Exclude file patterns. + |-------------------------------------------------------------------------- + | This will take precedence over included files. + | + */ - 'icons-enabled' => true, + 'exclude_files' => [ + // 'my_secret.log' ], - /* ----------------------------------------------------------------- - | Icons - | ----------------------------------------------------------------- - */ - - 'icons' => [ - /** - * Font awesome >= 4.3 - * http://fontawesome.io/icons/ - */ - 'all' => 'fa fa-fw fa-list', // http://fontawesome.io/icon/list/ - 'emergency' => 'fa fa-fw fa-bug', // http://fontawesome.io/icon/bug/ - 'alert' => 'fa fa-fw fa-bullhorn', // http://fontawesome.io/icon/bullhorn/ - 'critical' => 'fa fa-fw fa-heartbeat', // http://fontawesome.io/icon/heartbeat/ - 'error' => 'fa fa-fw fa-times-circle', // http://fontawesome.io/icon/times-circle/ - 'warning' => 'fa fa-fw fa-exclamation-triangle', // http://fontawesome.io/icon/exclamation-triangle/ - 'notice' => 'fa fa-fw fa-exclamation-circle', // http://fontawesome.io/icon/exclamation-circle/ - 'info' => 'fa fa-fw fa-info-circle', // http://fontawesome.io/icon/info-circle/ - 'debug' => 'fa fa-fw fa-life-ring', // http://fontawesome.io/icon/life-ring/ + /* + |-------------------------------------------------------------------------- + | Hide unknown files. + |-------------------------------------------------------------------------- + | The include/exclude options above might catch files which are not + | logs supported by Log Viewer. In that case, you can hide them + | from the UI and API calls by setting this to true. + | + */ + + 'hide_unknown_files' => true, + + /* + |-------------------------------------------------------------------------- + | Shorter stack trace filters. + |-------------------------------------------------------------------------- + | Lines containing any of these strings will be excluded from the full log. + | This setting is only active when the function is enabled via the user interface. + | + */ + + 'shorter_stack_trace_excludes' => [ + '/vendor/symfony/', + '/vendor/laravel/framework/', + '/vendor/barryvdh/laravel-debugbar/', ], - /* ----------------------------------------------------------------- - | Colors - | ----------------------------------------------------------------- - */ - - 'colors' => [ - 'levels' => [ - 'empty' => '#D1D1D1', - 'all' => '#8A8A8A', - 'emergency' => '#B71C1C', - 'alert' => '#D32F2F', - 'critical' => '#F44336', - 'error' => '#FF5722', - 'warning' => '#FF9100', - 'notice' => '#4CAF50', - 'info' => '#1976D2', - 'debug' => '#90CAF9', - ], - ], + /* + |-------------------------------------------------------------------------- + | Cache driver + |-------------------------------------------------------------------------- + | Cache driver to use for storing the log indices. Indices are used to speed up + | log navigation. Defaults to your application's default cache driver. + | + */ - /* ----------------------------------------------------------------- - | Strings to highlight in stack trace - | ----------------------------------------------------------------- - */ + 'cache_driver' => env('LOG_VIEWER_CACHE_DRIVER', null), - 'highlight' => [ - '^#\d+', - '^Stack trace:', - ], + /* + |-------------------------------------------------------------------------- + | Chunk size when scanning log files lazily + |-------------------------------------------------------------------------- + | The size in MB of files to scan before updating the progress bar when searching across all files. + | + */ + + 'lazy_scan_chunk_size_in_mb' => 50, + 'strip_extracted_context' => true, ]; diff --git a/package-lock.json b/package-lock.json index db97d97..09dea98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -414,9 +414,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", - "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.2.tgz", + "integrity": "sha512-ahxSgCkAEk+P/AVO0vYr7DxOD3CwAQrT0Go9BJyGQ9Ef0QxVOfjDZMiF4Y2s3mLyPrjonchIMH/tbWHucJMykQ==", "cpu": [ "arm" ], @@ -427,9 +427,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", - "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.2.tgz", + "integrity": "sha512-lAarIdxZWbFSHFSDao9+I/F5jDaKyCqAPMq5HqnfpBw8dKDiCaaqM0lq5h1pQTLeIqueeay4PieGR5jGZMWprw==", "cpu": [ "arm64" ], @@ -440,9 +440,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", - "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.2.tgz", + "integrity": "sha512-SWsr8zEUk82KSqquIMgZEg2GE5mCSfr9sE/thDROkX6pb3QQWPp8Vw8zOq2GyxZ2t0XoSIUlvHDkrf5Gmf7x3Q==", "cpu": [ "arm64" ], @@ -453,9 +453,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", - "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.2.tgz", + "integrity": "sha512-o/HAIrQq0jIxJAhgtIvV5FWviYK4WB0WwV91SLUnsliw1lSAoLsmgEEgRWzDguAFeUEUUoIWXiJrPqU7vGiVkA==", "cpu": [ "x64" ], @@ -466,9 +466,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", - "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.2.tgz", + "integrity": "sha512-nwlJ65UY9eGq91cBi6VyDfArUJSKOYt5dJQBq8xyLhvS23qO+4Nr/RreibFHjP6t+5ap2ohZrUJcHv5zk5ju/g==", "cpu": [ "arm" ], @@ -479,9 +479,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", - "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.2.tgz", + "integrity": "sha512-Pg5TxxO2IVlMj79+c/9G0LREC9SY3HM+pfAwX7zj5/cAuwrbfj2Wv9JbMHIdPCfQpYsI4g9mE+2Bw/3aeSs2rQ==", "cpu": [ "arm64" ], @@ -492,9 +492,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", - "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.2.tgz", + "integrity": "sha512-cAOTjGNm84gc6tS02D1EXtG7tDRsVSDTBVXOLbj31DkwfZwgTPYZ6aafSU7rD/4R2a34JOwlF9fQayuTSkoclA==", "cpu": [ "arm64" ], @@ -505,11 +505,11 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", - "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.2.tgz", + "integrity": "sha512-4RyT6v1kXb7C0fn6zV33rvaX05P0zHoNzaXI/5oFHklfKm602j+N4mn2YvoezQViRLPnxP8M1NaY4s/5kXO5cw==", "cpu": [ - "ppc64le" + "ppc64" ], "dev": true, "optional": true, @@ -518,9 +518,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", - "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.2.tgz", + "integrity": "sha512-KNUH6jC/vRGAKSorySTyc/yRYlCwN/5pnMjXylfBniwtJx5O7X17KG/0efj8XM3TZU7raYRXJFFReOzNmL1n1w==", "cpu": [ "riscv64" ], @@ -531,9 +531,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", - "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.2.tgz", + "integrity": "sha512-xPV4y73IBEXToNPa3h5lbgXOi/v0NcvKxU0xejiFw6DtIYQqOTMhZ2DN18/HrrP0PmiL3rGtRG9gz1QE8vFKXQ==", "cpu": [ "s390x" ], @@ -544,9 +544,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", - "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.2.tgz", + "integrity": "sha512-QBhtr07iFGmF9egrPOWyO5wciwgtzKkYPNLVCFZTmr4TWmY0oY2Dm/bmhHjKRwZoGiaKdNcKhFtUMBKvlchH+Q==", "cpu": [ "x64" ], @@ -557,9 +557,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", - "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.2.tgz", + "integrity": "sha512-8zfsQRQGH23O6qazZSFY5jP5gt4cFvRuKTpuBsC1ZnSWxV8ZKQpPqOZIUtdfMOugCcBvFGRa1pDC/tkf19EgBw==", "cpu": [ "x64" ], @@ -570,9 +570,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", - "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.2.tgz", + "integrity": "sha512-H4s8UjgkPnlChl6JF5empNvFHp77Jx+Wfy2EtmYPe9G22XV+PMuCinZVHurNe8ggtwoaohxARJZbaH/3xjB/FA==", "cpu": [ "arm64" ], @@ -583,9 +583,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", - "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.2.tgz", + "integrity": "sha512-djqpAjm/i8erWYF0K6UY4kRO3X5+T4TypIqw60Q8MTqSBaQNpNXDhxdjpZ3ikgb+wn99svA7jxcXpiyg9MUsdw==", "cpu": [ "ia32" ], @@ -596,9 +596,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", - "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.2.tgz", + "integrity": "sha512-teAqzLT0yTYZa8ZP7zhFKEx4cotS8Tkk5XiqNMJhD4CpaWB1BHARE4Qy+RzwnXvSAYv+Q3jAqCVBS+PS+Yee8Q==", "cpu": [ "x64" ], @@ -847,23 +847,23 @@ } }, "node_modules/datatables.net-select": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/datatables.net-select/-/datatables.net-select-2.0.0.tgz", - "integrity": "sha512-sKMNoTlJejk5FfZo6Niwdn2/bHSDYiIt5WuMSsXzMGiCTIPtnDiYjNHF843vToKiTTsi+6T0zUuWddHLGPRsxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/datatables.net-select/-/datatables.net-select-2.0.1.tgz", + "integrity": "sha512-ZrVseEmu+9cNd0PtuKpqRagwwp1K9P/JNaG6kdveCm5RzDYOqdulSB6owuIoIZwI59g9H4/d3paNl2q/wrYHZg==", "dev": true, "dependencies": { - "datatables.net": ">=2.0.0", + "datatables.net": "^2", "jquery": ">=1.7" } }, "node_modules/datatables.net-select-bs5": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/datatables.net-select-bs5/-/datatables.net-select-bs5-2.0.0.tgz", - "integrity": "sha512-/kofh8KjUEzoHQ+Zji8movbzA3Ooe9Gz/UcjSJzc5CMHEq93gvcDT9x5jtRGBXO8zjQO0XWrXxFxkXoRO1SlAw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/datatables.net-select-bs5/-/datatables.net-select-bs5-2.0.1.tgz", + "integrity": "sha512-fMgqYBN+4Zy26vaCnHy9P+fTyswcwxjjnt18oSZKhRW9jHwrifFjubs4YwVcQYBV36Hmf72wrPzY3h1J6kslkA==", "dev": true, "dependencies": { - "datatables.net-bs5": ">=2.0.0", - "datatables.net-select": "2.0.0", + "datatables.net-bs5": "^2", + "datatables.net-select": "2.0.1", "jquery": ">=1.7" } }, @@ -1250,9 +1250,9 @@ } }, "node_modules/rollup": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", - "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.2.tgz", + "integrity": "sha512-WkeoTWvuBoFjFAhsEOHKRoZ3r9GfTyhh7Vff1zwebEFLEFjT1lG3784xEgKiTa7E+e70vsC81roVL2MP4tgEEQ==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -1265,21 +1265,21 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.14.1", - "@rollup/rollup-android-arm64": "4.14.1", - "@rollup/rollup-darwin-arm64": "4.14.1", - "@rollup/rollup-darwin-x64": "4.14.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", - "@rollup/rollup-linux-arm64-gnu": "4.14.1", - "@rollup/rollup-linux-arm64-musl": "4.14.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", - "@rollup/rollup-linux-riscv64-gnu": "4.14.1", - "@rollup/rollup-linux-s390x-gnu": "4.14.1", - "@rollup/rollup-linux-x64-gnu": "4.14.1", - "@rollup/rollup-linux-x64-musl": "4.14.1", - "@rollup/rollup-win32-arm64-msvc": "4.14.1", - "@rollup/rollup-win32-ia32-msvc": "4.14.1", - "@rollup/rollup-win32-x64-msvc": "4.14.1", + "@rollup/rollup-android-arm-eabi": "4.14.2", + "@rollup/rollup-android-arm64": "4.14.2", + "@rollup/rollup-darwin-arm64": "4.14.2", + "@rollup/rollup-darwin-x64": "4.14.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.2", + "@rollup/rollup-linux-arm64-gnu": "4.14.2", + "@rollup/rollup-linux-arm64-musl": "4.14.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.2", + "@rollup/rollup-linux-riscv64-gnu": "4.14.2", + "@rollup/rollup-linux-s390x-gnu": "4.14.2", + "@rollup/rollup-linux-x64-gnu": "4.14.2", + "@rollup/rollup-linux-x64-musl": "4.14.2", + "@rollup/rollup-win32-arm64-msvc": "4.14.2", + "@rollup/rollup-win32-ia32-msvc": "4.14.2", + "@rollup/rollup-win32-x64-msvc": "4.14.2", "fsevents": "~2.3.2" } }, @@ -1290,9 +1290,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.74.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz", - "integrity": "sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==", + "version": "1.75.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", + "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/public/build/assets/datatables-BPIyAnQf.js b/public/build/assets/datatables-BZJQ16xp.js similarity index 96% rename from public/build/assets/datatables-BPIyAnQf.js rename to public/build/assets/datatables-BZJQ16xp.js index 7fd0d82..fa22a15 100644 --- a/public/build/assets/datatables-BPIyAnQf.js +++ b/public/build/assets/datatables-BZJQ16xp.js @@ -4,9 +4,9 @@ import{j as Ze,r as mn,c as bt,g as aa}from"./jquery-BbSKnqzy.js";/*! DataTables * 2020 SpryMedia Ltd - datatables.net/license */let Ke=Ze;Ke.extend(!0,F.defaults,{renderer:"bootstrap"});Ke.extend(!0,F.ext.classes,{container:"dt-container dt-bootstrap5",search:{input:"form-control form-control-sm"},length:{select:"form-select form-select-sm"},processing:{container:"dt-processing card"}});F.ext.renderer.pagingButton.bootstrap=function(e,t,r,n,o){var a=["dt-paging-button","page-item"];n&&a.push("active"),o&&a.push("disabled");var i=Ke("
  • ").addClass(a.join(" ")),l=Ke("",{href:o?null:"#",class:"page-link"}).html(r).appendTo(i);return{display:i,clicker:l}};F.ext.renderer.pagingContainer.bootstrap=function(e,t){return Ke("