cndrsdrmn / http-logger
Logging http request and response
Requires
- php: ^7.4|^8.0|^8.1
- ext-json: *
- illuminate/support: ^6.0|^7.0|^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ~3.8.0|^4.0|^5.0|^6.0|^7.0
- phpunit/phpunit: ^8.0|^9.0
README
This package adds a middleware for writing a log of incoming requests and out-coming responses.
Installation
Install the package via composer:
composer require cndrsdrmn/http-logger
Optionally you can publish the config file with:
php artisan vendor:publish --provider="Cndrsdrmn\HttpLogger\HttpLoggerServiceProvider" --tag="config"
This is the contents of the published config file:
return [ /* |----------------------------------------------------------- | HTTP Logger Channel |----------------------------------------------------------- */ 'channel' => env('HTTP_LOGGER_CHANNEL', env('LOG_CHANNEL', 'stack')), /* |----------------------------------------------------------- | Masking Fields |----------------------------------------------------------- | | Sometimes you need to keep field values secretly. | You can register a field on this "masking" key to keep its value secret. | Masked a request "body", "query" and "headers". */ 'masking' => [ 'password', 'password_confirmation', ], /* |----------------------------------------------------------- | Skip Endpoints |----------------------------------------------------------- | | Sometimes, you need to skip recording a log for whitelist endpoints. | Example: '/foo/bar', '/foo/*' */ 'skip_endpoints' => [], /* |----------------------------------------------------------- | Skip IPs Address |----------------------------------------------------------- | | Sometimes, you need to skip recording a log for whitelist IPs address. | Example: '192.168.0.10', '172.10.0.*', '172.9.*', */ 'skip_ips' => [], ];
Configuration
We recommend making a new channel in config/logging.php
for handling the HTTP Logger.
By default, we use the stack
channel for handling this. You can override with put the variable HTTP_LOGGER_CHANNEL
in the .env
file.
// in config/logging.php 'channels' => [ // ... 'http-logger' => [ 'driver' => 'daily', 'path' => storage_path('logs/http-loggers/http-logger.log'), 'level' => 'debug', 'days' => 14, ], // ... ] // in .env file HTTP_LOGGER_CHANNEL=http-logger
For lumen your need enable withFacades
at bootstrap/app.php
.
$app->withFacades();
Usage
1. Laravel
This package provides a middleware that can be added as a global middleware or as a single route.
Please see official documentation for more information.
// in app/Http/Kernel.php protected $middleware = [ // ... \Cndrsdrmn\HttpLogger\Middleware\HttpLogger::class, ]; // in a routes file Route::post('foo', function () { // action here })->middleware(\Cndrsdrmn\HttpLogger\Middleware\HttpLogger::class);
2. Lumen
This package provides a middleware that can be added as a global middleware or as a single route.
Please see official documentation for more information.
// in bootstrap/app.php // Global Middleware $app->middleware([ \Cndrsdrmn\HttpLogger\Middleware\HttpLogger::class, ]); // OR Assigning Middleware To Routes $app->routeMiddleware([ 'http-logger' => \Cndrsdrmn\HttpLogger\Middleware\HttpLogger::class, ]); // in routes file $router->get('/', ['middleware' => ['http-logger'], function () { // }]);
Create/copy a configuration file from here into config/http-logger.php
then registering a configuration at bootstrap/app.php
.
$app->configure('http-logger');
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.