diff --git a/composer.json b/composer.json index 74285fc0..e0b22240 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,7 @@ "awobaz/compoships": "^2.2", "inertiajs/inertia-laravel": "^0.6.9", "intervention/imagecache": "^2.5", - "arcanedev/log-viewer": "^9.0", + "juzaweb/log-viewer": "^1.0", "darkaonline/l5-swagger": "^8.3", "doctrine/dbal": "^3.3", "intervention/image": "^2.5", diff --git a/modules/Backend/Http/Controllers/Backend/Tool/LogViewerController.php b/modules/Backend/Http/Controllers/Backend/Tool/LogViewerController.php deleted file mode 100644 index 6aa19c7f..00000000 --- a/modules/Backend/Http/Controllers/Backend/Tool/LogViewerController.php +++ /dev/null @@ -1,227 +0,0 @@ -addBreadcrumb( - [ - 'title' => trans('cms::app.error_logs'), - 'url' => action([static::class, 'index']), - ] - ); - - $level = 'all'; - $title = trans('cms::app.error_logs').' '.$date; - $log = $this->getLogOrFail($date); - $query = $request->get('query'); - $levels = $this->logViewer->levelsNames(); - $entries = $log->entries($level)->paginate($this->perPage); - - return view( - 'cms::backend.logs.error.show', - compact( - 'title', - 'date', - 'level', - 'log', - 'query', - 'levels', - 'entries' - ) - ); - } - - public function listLogs(Request $request): JsonResponse - { - $stats = $this->logViewer->statsTable(); - $rows = $this->paginate($stats->rows(), $request); - - foreach ($rows as $index => $row) { - $row['edit_url'] = route( - 'admin.logs.error.show', - [ - $row['date'], - ] - ); - $rows->put($index, $row); - } - - return response()->json( - [ - 'total' => count($stats->rows()), - 'rows' => $rows->values(), - ] - ); - } - - /** - * Show the log with the search query. - * - * @param Request $request - * @param string $date - * @param string $level - * - * @return RedirectResponse|View - */ - public function search(Request $request, string $date, string $level = 'all'): RedirectResponse|View - { - $this->addBreadcrumb( - [ - 'title' => trans('cms::app.error_logs'), - 'url' => action([static::class, 'index']), - ] - ); - - $title = trans('cms::app.error_logs').' '.$date; - $query = $request->get('query'); - if (is_null($query)) { - return redirect()->route($this->showRoute, [$date]); - } - - $log = $this->getLogOrFail($date); - $levels = $this->logViewer->levelsNames(); - $needles = array_map( - function ($needle) { - return Str::lower($needle); - }, - array_filter(explode(' ', $query)) - ); - - $entries = $log->entries($level) - ->unless( - empty($needles), - function (LogEntryCollection $entries) use ($needles) { - return $entries->filter( - function (LogEntry $entry) use ($needles) { - foreach ([$entry->header, $entry->stack, $entry->context()] as $subject) { - if (Str::containsAll(Str::lower($subject), $needles)) { - return true; - } - } - - return false; - } - ); - } - ) - ->paginate($this->perPage); - - return view( - 'cms::backend.logs.error.show', - compact('title', 'level', 'log', 'query', 'levels', 'entries') - ); - } - - /** - * Delete a log. - * - * @param Request $request - * - * @return JsonResponse - * @throws FilesystemException - */ - public function delete(Request $request): JsonResponse - { - $date = $request->input('date'); - - return response()->json( - [ - 'result' => $this->logViewer->delete($date) ? 'success' : 'error', - ] - ); - } - - public function download($date): \Symfony\Component\HttpFoundation\BinaryFileResponse - { - return $this->logViewer->download($date); - } - - /** - * Paginate logs. - * - * @param array $data - * @param Request $request - * - * @return \Illuminate\Pagination\LengthAwarePaginator - */ - protected function paginate(array $data, Request $request): LengthAwarePaginator - { - $data = new Collection($data); - $page = $request->get('page', 1); - $path = $request->url(); - - return new LengthAwarePaginator( - $data->forPage($page, 10), - $data->count(), - 10, - $page, - compact('path') - ); - } - - /** - * Get a log or fail - * - * @param string $date - * - * @return Log|null - */ - protected function getLogOrFail(string $date): ?Log - { - $log = null; - - try { - $log = $this->logViewer->get($date); - } catch (LogNotFoundException $e) { - abort(404, $e->getMessage()); - } - - return $log; - } -} diff --git a/resources/views/backend/logs/error/index.blade.php b/resources/views/backend/logs/error/index.blade.php deleted file mode 100644 index 7db525d7..00000000 --- a/resources/views/backend/logs/error/index.blade.php +++ /dev/null @@ -1,84 +0,0 @@ -@extends('cms::layouts.backend') - -@section('content') - -
-
- -
- -
- -
- - - - - - - - - - - - - - -
{{ trans('cms::app.date') }}{{ trans('cms::app.content') }}{{ trans('cms::app.emergency') }}{{ trans('cms::app.error') }}{{ trans('cms::app.info') }}{{ trans('cms::app.warning') }}{{ trans('cms::app.notice') }}{{ trans('cms::app.actions') }}
-
- - - -@endsection diff --git a/resources/views/backend/logs/error/show.blade.php b/resources/views/backend/logs/error/show.blade.php deleted file mode 100644 index 69bf48f5..00000000 --- a/resources/views/backend/logs/error/show.blade.php +++ /dev/null @@ -1,304 +0,0 @@ -@extends('cms::layouts.backend') - -@section('header') - -@endsection - -@section('content') -
-
- {{-- Log Details --}} -
- -
- - - - - - - - - - - - - - - - - -
@lang('File path') :{{ $log->getPath() }}
@lang('Log entries') : - {{ $entries->total() }} - {{ trans('Size') }} : - {{ $log->size() }} - @lang('Created at') : - {{ $log->createdAt() }} - @lang('Updated at') : - {{ $log->updatedAt() }} -
-
- -
- - {{-- Log Entries --}} -
- @if ($entries->hasPages()) -
- - {{ __('Page :current of :last', ['current' => $entries->currentPage(), 'last' => $entries->lastPage()]) }} - -
- @endif - -
- - - - - - - - - - - - @forelse($entries as $key => $entry) - - - - - - - - @if ($entry->hasStack() || $entry->hasContext()) - - - - @endif - @empty - - - - @endforelse - -
{{ trans('ENV') }}{{ trans('Level') }}{{ trans('Time') }}{{ trans('Header') }}{{ trans('Actions') }}
- {{ $entry->env }} - - - {!! $entry->level() !!} - - - - {{ $entry->datetime->format('H:i:s') }} - - - {{ $entry->header }} - - @if ($entry->hasStack()) - - @endif - - @if ($entry->hasContext()) - - @endif -
- @if ($entry->hasStack()) -
- {!! $entry->stack() !!} -
- @endif - - @if ($entry->hasContext()) -
- {{ $entry->context() }} -
- @endif -
- @lang('The list of logs is empty!') -
-
-
- - {!! $entries->appends(compact('query'))->render() !!} -
-
- - -@endsection diff --git a/routes/components/logs.route.php b/routes/components/logs.route.php index c98ed743..d28bffbb 100644 --- a/routes/components/logs.route.php +++ b/routes/components/logs.route.php @@ -1,30 +1,5 @@ name('admin.logs.email'); - -if (!config('log-viewer.route.enabled')) { - Route::group( - [ - 'prefix' => 'log-viewer' - ], - function () { - Route::get('/', [LogViewerController::class, 'index'])->name('admin.logs.error.index'); - Route::get('get-logs', [LogViewerController::class, 'listLogs']) - ->name('admin.logs.error.get-logs'); - Route::get('{date}', [LogViewerController::class, 'show']) - ->name('admin.logs.error.show') - ->where('date', '[0-9\-]+'); - Route::get('download/{date}', [LogViewerController::class, 'download']) - ->name('admin.logs.error.download') - ->where('date', '[0-9\-]+'); - Route::get('search/{date}', [LogViewerController::class, 'search']) - ->name('admin.logs.error.search') - ->where('date', '[0-9\-]+'); - Route::delete('/', [LogViewerController::class, 'delete']) - ->name('admin.logs.error.delete'); - } - ); -}