| Install | |
|---|---|
composer require gboquizosanchez/filament-log-viewer |
|
| Latest Version: | 1.4.3 |
| PHP: | ^8.2|^8.3|^8.4 |
This package allows you to manage and keep track of each one of your log files in Filament panels.
Based on ARCANEDEV LogViewer.
| Plugin | Filament |
|---|---|
| 1.x | 3.x |
| 2.x | 4.x - 5.x |
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 |
| single | Standard Laravel single 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')
->timezone('Europe/Madrid')
->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')
->timezone('Pacific/Auckland')
->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.