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

1.0.5 2025-10-16 10:48 UTC

This package is auto-updated.

Last update: 2025-12-16 11:14:00 UTC


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 или другие для кастомизации.

Параметры компонента

Основные параметры

ПараметрТипПо умолчаниюОписание
folderstringstorage_path('logs')Путь к папке с логами
filestringstorage_path('logs/laravel.log')Путь к файлу лога
pageint1Текущая страница
per-pageint25Количество записей на странице
configarray[]Конфигурация компонента

Конфигурация (config)

ПараметрТипПо умолчаниюОписание
show_breadcrumbsbooltrueПоказывать хлебные крошки
show_sidebarbooltrueПоказывать боковую панель
show_actionsbooltrueПоказывать действия (скачать, очистить, удалить)
show_paginationbooltrueПоказывать пагинацию
table_classesstring'table table-striped'CSS классы для таблицы
container_classesstring'row'CSS классы для контейнера
sidebar_classesstring'col-2'CSS классы для боковой панели
content_classesstring'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.