Log Viewer
A Filament plugin for viewing and managing log files.
Author:
Germán Boquizo Sánchez
Documentation
#Summary
This package allows you to manage and keep track of each one of your log files in Filament panels.
Based on ARCANEDEV LogViewer.
#Starting 🚀
#Prerequisites 📋
- Composer.
- PHP version 8.3 or higher.
#Running 🛠️
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';
#🔧 Drivers
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
#📌 Available Drivers
| 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.
#Example .env configuration
Use the default LOG_CHANNEL (daily):
LOG_CHANNEL=daily
Or override to use raw with FILAMENT_LOG_VIEWER_DRIVER:
FILAMENT_LOG_VIEWER_DRIVER=raw
#Others configurations
->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
])
#Custom Pages Configuration
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.
])
#Screenshots 💄

#PHP dependencies 📦
#Develop dependencies 🔧
#Problems? 🚨
Let me know about yours by opening an issue!
#Credits 🧑💻
#License 📄
MIT License (MIT). See License File.