Log Viewer plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Log Viewer

A Filament plugin for viewing and managing log files.

Tags: Developer Tool
Supported versions:
5.x 4.x 3.x
Germán Boquizo Sánchez avatar Author: Germán Boquizo Sánchez

Documentation

Latest Stable Version Software License Total Downloads

#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 💄

Panel

#PHP dependencies 📦

  • Owenvoke Blade Fontawesome Latest Stable Version

#Develop dependencies 🔧

  • Friendsofphp Php Cs Fixer Latest Stable Version
  • Hermes Dependencies Latest Stable Version
  • Larastan Larastan Latest Stable Version
  • Orchestra Testbench Latest Stable Version
  • Pestphp Pest Latest Stable Version

#Problems? 🚨

Let me know about yours by opening an issue!

#Credits 🧑‍💻

#License 📄

MIT License (MIT). See License File.

The author

Germán Boquizo Sánchez avatar Author: Germán Boquizo Sánchez

I am Germán, a web developer with experience in Laravel, FilamentPHP and PHP. I love programming, PHP and Laravel 🥰.

Contact me if you need some help with FilamentPHP or Laravel. I am always happy to help.

Plugins
1
Stars
30