Spatie Laravel Http Logger is a package that allows you to log HTTP requests and responses in your Laravel application. This can be particularly useful for debugging and monitoring purposes, as it helps you keep track of all incoming and outgoing HTTP requests.
Installation
To install the package, you can use Composer:
1 |
composer require spatie/laravel-http-logger |
Configuration
After installation, you need to publish the configuration file:
1 |
php artisan vendor:publish --provider="Spatie\HttpLogger\HttpLoggerServiceProvider" |
This will create a http-logger.php
configuration file in the config
directory. Here, you can customize how the logging works, such as the log level and the channels used.
Usage
The package provides middleware that you can use to log HTTP requests. You need to register the middleware in your app/Http/Kernel.php
file.
Register Middleware: Add the middleware to the desired group (e.g., web
or api
):
1 2 3 4 5 6 |
protected $middlewareGroups = [ 'api' => [ // Other middleware... \Spatie\HttpLogger\Middlewares\LogHttpRequests::class, ], ]; |
Log HTTP Requests
Once the middleware is set up, it will automatically log all incoming HTTP requests and their responses. The logs will be stored according to your logging configuration in the specified log channel.
Example Output
Here’s what a typical log entry might look like when using Spatie Laravel Http Logger:
Request Log Entry:
1 2 3 4 5 6 7 8 9 10 11 |
[2024-10-01 14:00:00] local.INFO: Incoming request: { "method": "GET", "url": "https://your-app.com/api/users", "headers": { "Accept": "application/json", "Authorization": "Bearer your-token", ... }, "body": null } |
Response Log Entry:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[2024-10-01 14:00:00] local.INFO: Outgoing response: { "status": 200, "headers": { "Content-Type": "application/json", ... }, "body": { "data": [ { "id": 1, "name": "John Doe" }, ... ] } } |
Customizing Log Output
You can customize what gets logged by adjusting the http-logger.php
configuration file. Options include:
- Log Level: Set the log level (e.g.,
debug
,info
,warning
, etc.). - Log Channel: Specify which log channel to use.
- Excluded Routes: Exclude certain routes from being logged.
Excluding Routes
If you want to exclude specific routes from logging, you can do so in the configuration file:
1 2 3 |
'excluded_routes' => [ 'api/some-route', ], |
Conclusion
The Spatie Laravel Http Logger package is a powerful tool for logging HTTP requests and responses in your Laravel application. By integrating this package, you can gain valuable insights into the traffic and behavior of your application, which can be crucial for debugging and monitoring.