View Laravel/Lumen logs in browser.

Disclaimer

This package is simply a lightweight web interface for Laravel and Lumen file-based logs.
If you need an advanced debugging tool consider trying Telescope, Debugbar, Clockwork or Ray
And if you need an error tracking software consider tring Sentry and Bugsnag.

Live Preview

Visit Here to preview online playground.

Screen Shot

screen shot

Installation

You can install the package via composer:

composer require mojtabaahn/laravel-web-logs

And it’s done.
You can optionally publish the config file with:

php artisan vendor:publish --provider="Mojtabaahn\LaravelWebLogs\Providers\LaravelWebLogsServiceProvider" --tag="config"

This is the contents of the published config file:

use Mojtabaahn\LaravelWebLogs\Http\Middlewares\Authorize;

return [

    /*
    |--------------------------------------------------------------------------
    | Dashboard Enabled
    |--------------------------------------------------------------------------
    |
    | Here you may specify either dashboard is enabled or not
    |
    */

    'enabled' => env('WEB_LOGS_ENABLED', true),

    /*
    |--------------------------------------------------------------------------
    | Route Group Attributes
    |--------------------------------------------------------------------------
    |
    | This is the array configuring package route attributes. feel free
    | to edit route prefixes, middlewares and anything else.
    |
    | In case you want to add authorization using default auth driver,
    | uncomment web middleware.
    |
    */

    'route_group_attributes' => [
        'prefix' => env('WEB_LOGS_PATH', 'web-logs'),
        'middleware' => [
            // 'web',
            Authorize::class,
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Lines Per Page
    |--------------------------------------------------------------------------
    |
    | On each request from dashboard to it's back-end how many lines should
    | it read of specified log file. Setting this option to a big number
    | may reduce dashboard performance!
    |
    */

    'lines_per_page' => env('WEB_LOGS_LINES_PER_PAGE', 1000),
];

Authorization

Web Logs is enabled by default for all users and guests. In case you want to authorize users before accessing it you must register a viewWebLogs ability. A good place to do this is in the AuthServiceProvider that ships with Laravel.

public function boot()
{
    $this->registerPolicies();

    Gate::define('viewWebLogs', function ($user = null) {
        // return true if access to web logs is allowed
    });
}

Future Plans

  • Add option to auto-append new logs (like tail -f)
  • Lazy-load/Infinite-scroll for big files
  • Add guard for accessing routes
  • Move stores to Pinia
  • Add tests
  • Support nested logs (logs in subdirectories)
  • Add Day.js and time-zone support
  • Add global search option using grep or other fast search methods

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

GitHub

View Github