kahovskaia / laravel-log-viewer
Lib for reading log files
Installs: 3 081
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Forks: 0
Type:laravel-package
pkg:composer/kahovskaia/laravel-log-viewer
Requires
- php: >=8.0
README
Универсальная библиотека для просмотра логов Laravel с гибким Blade-компонентом, теперь с улучшенным дизайном и полноэкранным модальным окном для просмотра трассировки стека.
Установка
composer require kahovskaia/laravel-log-viewer
После установки опубликуйте ресурсы:
php artisan vendor:publish --provider="kahovskaia\LaravelLogViewer\LaravelLogViewerServiceProvider"
Примечание: Для использования полноэкранного модального окна для трассировки стека требуется Bootstrap 5. Убедитесь, что CSS и JS файлы Bootstrap включены в ваш проект.
Использование
Базовое использование
Просто добавьте компонент в ваш Blade-шаблон:
<x-log-viewer />
Продвинутое использование
<x-log-viewer
:per-page="25"
folder="{{ storage_path('logs/custom') }}"
file="{{ storage_path('logs/custom/app.log') }}"
:config="[
'show_breadcrumbs' => true,
'show_sidebar' => true,
'show_actions' => true,
'show_pagination' => true,
'table_classes' => 'table table-striped',
'icons' => [
'folder' => 'ti ti-folder',
'file' => 'ti ti-file',
],
'routes' => [
'index' => 'admin.logs.index',
'download' => 'admin.log.download',
'delete' => 'admin.log.delete',
'clear' => 'admin.log.clear',
]
]"
/>
Особенности
- Полноэкранное модальное окно для трассировки стека: Просмотр трассировки стека теперь осуществляется в полноэкранном модальном окне, что устраняет проблемы с горизонтальной прокруткой и улучшает читаемость.
- Улучшенный дизайн: Современный и яркий дизайн с плавными градиентами, обновленной цветовой палитрой и улучшенной типографикой для лучшей читаемости.
- Гибкая конфигурация: Настройка отображения хлебных крошек, боковой панели, действий и пагинации.
- Поддержка иконок: Используйте иконки Tabler, Bootstrap или другие для кастомизации.
Параметры компонента
Основные параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
folder | string | storage_path('logs') | Путь к папке с логами |
file | string | storage_path('logs/laravel.log') | Путь к файлу лога |
page | int | 1 | Текущая страница |
per-page | int | 25 | Количество записей на странице |
config | array | [] | Конфигурация компонента |
Конфигурация (config)
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
show_breadcrumbs | bool | true | Показывать хлебные крошки |
show_sidebar | bool | true | Показывать боковую панель |
show_actions | bool | true | Показывать действия (скачать, очистить, удалить) |
show_pagination | bool | true | Показывать пагинацию |
table_classes | string | 'table table-striped' | CSS классы для таблицы |
container_classes | string | 'row' | CSS классы для контейнера |
sidebar_classes | string | 'col-2' | CSS классы для боковой панели |
content_classes | string | 'col-10' | CSS классы для основного контента |
Иконки (icons)
'icons' => [
'folder' => 'ti ti-folder', // Иконка папки
'file' => 'ti ti-file', // Иконка файла
'download' => 'ti ti-download', // Иконка скачивания
'delete' => 'ti ti-trash', // Иконка удаления
'clear' => 'ti ti-file-x', // Иконка очистки
'calendar' => 'ti ti-calendar-plus', // Иконка календаря
'search' => 'ti ti-file-search', // Иконка поиска
]
Маршруты (routes)
'routes' => [
'index' => 'admin.logs.index', // Маршрут для просмотра логов
'download' => 'admin.log.download', // Маршрут для скачивания
'delete' => 'admin.log.delete', // Маршрут для удаления
'clear' => 'admin.log.clear', // Маршрут для очистки
]
Примеры использования
1. Минималистичный режим
<x-log-viewer
:config="[
'show_breadcrumbs' => false,
'show_sidebar' => false,
'show_actions' => false,
'table_classes' => 'table table-sm',
]"
/>
2. Для админ панели с полноэкранной трассировкой стека
<div class="container-fluid">
<h1>{{ __('System Logs') }}</h1>
<x-log-viewer
:config="[
'table_classes' => 'table table-hover table-striped',
'container_classes' => 'row g-4',
'sidebar_classes' => 'col-lg-2',
'content_classes' => 'col-lg-10',
]"
/>
</div>
3. В модальном окне
<div class="modal fade" id="logModal">
<div class="modal-dialog modal-fullscreen">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">System Logs</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body p-0">
<x-log-viewer
:per-page="10"
:config="[
'show_breadcrumbs' => false,
'show_sidebar' => false,
'show_actions' => false,
'container_classes' => '',
'table_classes' => 'table table-sm mb-0',
]"
/>
</div>
</div>
</div>
</div>
4. С кастомными иконками (Bootstrap Icons)
<x-log-viewer
:config="[
'icons' => [
'folder' => 'bi bi-folder',
'file' => 'bi bi-file-text',
'download' => 'bi bi-download',
'delete' => 'bi bi-trash',
'clear' => 'bi bi-file-x',
'calendar' => 'bi bi-calendar',
'search' => 'bi bi-search',
]
]"
/>
5. Темная тема
<x-log-viewer
:config="[
'table_classes' => 'table table-dark table-striped',
'container_classes' => 'row bg-dark text-light p-3 rounded',
]"
/>
Контроллер
Если вы хотите использовать контроллер, добавьте маршруты:
// routes/web.php
Route::prefix('admin')->name('admin.')->group(function () {
Route::get('/logs', [LogViewerController::class, 'index'])->name('logs.index');
Route::get('/log/download', [LogViewerController::class, 'download'])->name('log.download');
Route::get('/log/clear', [LogViewerController::class, 'clear'])->name('log.clear');
Route::get('/log/delete', [LogViewerController::class, 'delete'])->name('log.delete');
});
Кастомизация
Публикация views
php artisan vendor:publish --tag=laravel-log-viewer-views
После публикации вы можете изменить шаблон компонента в resources/views/vendor/laravel-log-viewer/components/log-viewer.blade.php.
Публикация конфигурации
php artisan vendor:publish --tag=laravel-log-viewer-config
Конфигурационный файл будет доступен в config/logviewer.php.
Требования
- PHP >= 8.0
- Laravel >= 8.0
- Bootstrap 5 (для полноэкранного модального окна трассировки стека)
Лицензия
MIT License. Подробности в файле LICENSE.
Поддержка
Если у вас есть вопросы или предложения, создайте issue в репозитории GitHub.