This package allows you to manage and keep track of each one of your log files in Filament panels.
Based on ARCANEDEV LogViewer.
Install the package via composer:
composer require gboquizosanchez/filament-log-viewer
And register the plugin on /app/Providers/Filament/AdminPanelProvider.php
->plugin(\Boquizo\FilamentLogViewer\FilamentLogViewerPlugin::make())
You can also publish the configuration file to customize the package:
php artisan vendor:publish --provider="Boquizo\FilamentLogViewer\FilamentLogViewerServiceProvider"
[!IMPORTANT] In v4 it's necessary to set up a custom theme following the instructions in the Filament Docs first.
After setting up the custom theme, you need to add this line, if not, the plugin will not work properly.
@source '../../../../vendor/gboquizosanchez/filament-log-viewer/resources/views/**/*.blade.php';
By default, the plugin uses LOG_CHANNEL as the driver.
To override this behavior, set the environment variable in your .env
file:
FILAMENT_LOG_VIEWER_DRIVER=raw
Driver | Description |
---|---|
daily | Default driver used by the plugin |
stack | Standard Laravel stack driver |
raw | Only available when explicitly using FILAMENT_LOG_VIEWER_DRIVER; shows all log files |
👉 Note:
If FILAMENT_LOG_VIEWER_DRIVER
is not defined, the plugin will continue using LOG_CHANNEL
.
.env
configurationUse the default LOG_CHANNEL (daily):
LOG_CHANNEL=daily
Or override to use raw with FILAMENT_LOG_VIEWER_DRIVER:
FILAMENT_LOG_VIEWER_DRIVER=raw
->plugins([ \Boquizo\FilamentLogViewer\FilamentLogViewerPlugin::make() ->navigationGroup('System') ->navigationSort(2) ->navigationIcon(Heroicon::OutlinedDocumentText) ->navigationLabel('Log Viewer') ->authorize(fn (): bool => auth()->user()->can('view-logs')), // Other plugins])
You can customize the plugin pages by extending the base classes:
// app/Filament/Pages/CustomListLogs.php<?php namespace App\Filament\Pages; use Boquizo\FilamentLogViewer\Pages\ListLogs as BaseListLogs;use Filament\Tables\Table;use Filament\Support\Icons\Heroicon; class CustomListLogs extends BaseListLogs{ protected static ?string $navigationLabel = 'Application Logs'; protected static ?string $navigationGroup = 'Monitoring'; public function table(Table $table): Table { return parent::table($table) ->defaultPaginationPageOption(25) ->poll('30s'); // Auto-refresh every 30 seconds }}
// app/Filament/Pages/CustomViewLog.php<?php namespace App\Filament\Pages; use Boquizo\FilamentLogViewer\Pages\ViewLog as BaseViewLog;use Filament\Actions\Action; class CustomViewLog extends BaseViewLog{ protected function getHeaderActions(): array { return array_merge( parent::getHeaderActions(), [ Action::make('export') ->label('Export to CSV') ->icon(Heroicon::OutlinedArrowDownTray) ->action(fn () => $this->exportToCsv()), ] ); } private function exportToCsv(): void { // Custom export logic }}
Then register your custom pages in the plugin configuration:
->plugins([ \Boquizo\FilamentLogViewer\FilamentLogViewerPlugin::make() ->listLogs(\App\Filament\Pages\CustomListLogs::class) ->viewLog(\App\Filament\Pages\CustomViewLog::class) ->navigationGroup('System') ->navigationSort(2) ->navigationIcon(Heroicon::DocumentText) ->navigationLabel('System Logs') ->authorize(function (): bool { return auth()->user()->hasAnyRole(['admin', 'developer']); }), // Other plugins like FilamentEmailPlugin, etc.])
Let me know about yours by opening an issue!
MIT License (MIT). See License File.