https://github.com/shipsaas/shipsaas-logger
Laravel ShipSaas Logger enables the tracing of requests across servers by marking each request with a unique ID. Skyrocket the production debugging.
https://github.com/shipsaas/shipsaas-logger
laravel laravel-library laravel-logger laravel-package logger shipsaas unique-request-logger
Last synced: 11 days ago
JSON representation
Laravel ShipSaas Logger enables the tracing of requests across servers by marking each request with a unique ID. Skyrocket the production debugging.
- Host: GitHub
- URL: https://github.com/shipsaas/shipsaas-logger
- Owner: shipsaas
- License: mit
- Created: 2023-10-21T12:53:19.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-10-25T12:56:17.000Z (over 1 year ago)
- Last Synced: 2024-03-25T22:03:30.271Z (about 1 year ago)
- Topics: laravel, laravel-library, laravel-logger, laravel-package, logger, shipsaas, unique-request-logger
- Language: PHP
- Homepage: https://shipsaas.tech
- Size: 485 KB
- Stars: 14
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ShipSaaS Logger - Laravel Unique Request ID Logger
[](https://github.com/shipsaas/shipsaas-logger/actions/workflows/build.yml)
[](https://codecov.io/gh/shipsaas/shipsaas-logger)Laravel ShipSaasLogger enables the tracing of requests across servers
by marking each request with a unique ID 🆔 for every log record of the given request.Skyrocket your production debugging ⚒️.
Additionally, ShipSaasLogger solves the **missing logs** problem when you have a huge amount of traffic 😎.
Making production logs more reliable and engineers won't have to scream "I can't find the logs" 🔥.
## Supports
- Laravel 10+
- PHP 8.2+## Installation
Install the library:
```bash
composer require shipsaas/shipsaas-logger
```## Usage
We ship a new Logger driver called `shipsaas-logger` which handles:
- Create log file based on the requestId, e.g.: `7a559daf-f1fe-4a97-8eb8-40d0907c986b.log`
- Write request-based logs there
- A fallback to the default log file, if `requestId` is not presentedThus, it fixes the missing logs issue because we have **independent log files** and not yolo-write into 1 file (which will mess up the logs when having high traffic) 🚀
Nowadays, we can just tell Sumologic (or Cloudwatch, DataDog, etc.) to sync your log folder (a whole folder) 🔥.
All your logs will be synced on the cloud.### Set up `config/logging.php`
Add a new channel called `shipsaas-logger` and change the configuration based on your needs
```php
'shipsaas-logger' => [
'driver' => 'shipsaas-logger',
'path' => storage_path('logs/requests/laravel.log'), // can change to your desired path
'default_log_file' => storage_path('logs/laravel.log'), // can change to your desired path
'id-type' => 'ulid', // uuid, orderedUuid, ulid
'use_json_format' => false, // set to true to write log as JSON
],
```### Update .env
Change the `LOG_CHANNEL` to `shipsaas-logger`
```dotenv
LOG_CHANNEL=shipsaas-logger
```### Play
Now that you have everything, hit some requests and try it out 😎.```php
class TransferController extends BaseController
{
public function transfer(): JsonResponse
{
Log::info('begin transfer', [
'amount' => ...,
'recipient' => ...,
]); // this log will have uniqueRequestId
// ...
Log::info('transferred', [
'amount' => ...,
'recipient' => ...,
'trasaction_id' => ...,
]); // this log will have uniqueRequestId
}
}
```And also congrats, no more "missing logs" pain for your app 😉.
## Usage (Minimalism)
### Inject Unique Request Id Logger Processor
By simply putting this piece of code into your `AppServiceProvider`:
```php
// AppServiceProvider.phpuse ShipSaasUniqueRequestLogger\UniqueRequestIdLoggerInitiator;
public function boot(): void
{
$this->app->booted(fn () => UniqueRequestIdLoggerInitiator::init());
}
```### Play
Now that you have injected ShipSaaS Logger, hit some requests and try it out 😎.
Note: The Minimalism way only injects the UniqueRequestID generation into your application, it **won't have any** improvement for missing logs issue.
## Testing
Run `composer test` 😆
## Contributors
- Seth Phat## Contributions & Support the Project
Feel free to submit any PR, please follow PSR-1/PSR-12 coding conventions and testing is a must.
If this package is helpful, please give it a ⭐️⭐️⭐️. Thank you!
## License
MIT License