lukaszaleckas / laravel-correlation-id
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- laravel/framework: ^9.0|^10.0|^11.0
Requires (Dev)
- fakerphp/faker: ^1.15
- larastan/larastan: ^2.8.1
- mockery/mockery: ^1.4
- orchestra/testbench: ^v7.40.1
- phpstan/phpstan-mockery: ^1.1.2
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: ^6.4
- squizlabs/php_codesniffer: ^3.6
README
该软件包提供了一种关联所有在请求上执行的操作的方法,包括异步操作(如作业)。
如果请求头中存在(配置中指定了头部名称),则从请求头生成或设置关联ID,并将其附加到每个日志上下文中。
安装
- 运行
composer require lukaszaleckas/laravel-correlation-id
- (可选) 发布
correlation_id.php
配置:如果你想自定义默认参数,请运行php artisan vendor:publish --tag=laravel-correlation-id
- (可选) 如果你希望关联ID在作业派发时自动保存并在处理/处理之前召回,请将
LaravelCorrelationId\Jobs\Traits\RecallsCorrelationId
特性添加到你的作业中。
使用方法
首先,你应该注入 LaravelCorrelationId\CorrelationIdService
服务。
可以通过调用服务的 getCurrentCorrelationId
方法来访问当前关联ID。
该软件包扩展了Laravel的默认 Dispatcher
类,以便在作业派发之前设置关联ID,并在处理之前召回。
该软件包默认将 LaravelCorrelationId\Http\Middleware\CorrelationIdMiddleware
中间件添加到全局中间件堆栈中。如果你想将中间件添加到特定的路由/分组,你可以通过设置环境变量 CORRELATION_ID_INCLUDE_ROUTE_MIDDLEWARE
为 false
来禁用此行为。
关于作业的说明
如果你在测试中模拟Laravel的 Dispatcher::class
,你应该更新它们以模拟此包的 JobDispatcher
类。
Mockery::mock(JobDispatcher::class)->shouldReceive('something')->...
关于Guzzle的说明
如果你使用Guzzle并且希望将关联ID从一个应用程序传递到另一个应用程序,你将发现 \LaravelCorrelationId\Utils\GuzzleUtils\
类非常有用。它公开了2个方法
getHandlerStack
用于与GuzzleHttp\Client
的handler
选项一起使用getMiddleware
用于与Laravel的HTTP客户端外观一起使用。
使用这些方法将确保客户端将关联ID头部和值传递给另一个应用程序。
升级
从1.x到2.x
这些版本不应有任何破坏性更改。然而,版本 2.x
废弃了 \LaravelCorrelationId\Jobs\Middleware\RecallCorrelationIdMiddleware
和 \LaravelCorrelationId\Jobs\Contracts\AbstractCorrelatableJob
类。
如果你仍然使用它们,请考虑升级到使用新的 \LaravelCorrelationId\Jobs\Traits\RecallsCorrelationId
作业特性。
版本 2.x 还自动将 \LaravelCorrelationId\Http\Middleware\CorrelationIdMiddleware
作为全局中间件添加,因此你不再需要手动进行此操作。