cndrsdrmn/http-logger

Logging http request and response

v1.2.0 2022-05-16 15:37 UTC

This package is auto-updated.

Last update: 2024-11-16 21:25:00 UTC


README

Latest Version on Packagist Testing GitHub Total Downloads

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.