famdirksen/laravel-request-logger

A package to log requests to the database

0.7 2023-10-12 20:34 UTC

This package is auto-updated.

Last update: 2024-04-12 21:40:31 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

With this package you can log incoming requests to the database.

Package info

Installation

You can install the package via composer:

composer require famdirksen/laravel-request-logger

Usage

Note: this package could have a lot of impact on your database size/performance based on the amount of requests your application receives.

This packages uses a middleware to log requests to the (at this moment the only support driver) database.

Installation

Add the UriLoggerMiddleware middleware to the route (or groups) you want to log.

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    protected $middlewareGroups = [
        'web' => [
            'request_logger',
            // ...
        ],

        'api' => [
            'request_logger',
            // ...
        ],
    ];
    
    protected $routeMiddleware = [
        'request_logger' => \Famdirksen\LaravelRequestLogger\Http\Middleware\UriLoggerMiddleware::class,
    ];
}

Publish the migrations using: php artisan vendor:publish --provider="Famdirksen\LaravelRequestLogger\LaravelRequestLoggerServiceProvider"

And migrate the database for storing the events. php artisan migrate

Clean the old records

It's possible to clean the old request logs using a job. This job can be dispatched using your cronjob (via php artisan schedule:run).

Add this command to your app/Console/Kernel.php to dispatch a new clear-request-logs command every hour:

$schedule->command(\Famdirksen\LaravelRequestLogger\Commands\ClearRequestLogsCommand::class)->hourly();

The job will delete the amount of request-logs based on your config. When the number of deleted records equals your limit, it will dispatch the job for the next xxx rows to delete. This method is used to prevent database lock.

Event handling

The events are dispatched to the queue after the response is sent to the user. For the best performance of this job, use a queue worker to process the jobs.

Disable logging

When you want to disable logging, you can set the REQUEST_LOGGER_ENABLED variable to false in your .env file (ps, don't forget to clear your config cache php artisan config:clear).

Specify the queue

It's possible to set a specific queue to run the request logger on. This can be done by setting the REQUEST_LOGGER_QUEUE variable in your .env. If no value is provided, it will use the default queue.

All new requests will be dispatched on the defined queue, but some may already be dispatched to the previous defined queue. To prevent loss of this data, you need to keep the old queue running until all jobs are processed.

Testing

composer test

Changelog

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

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

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