bonsi / laravel-tracetag
使用标签追踪应用程序中的请求
Requires
- php: >=7.0
- ramsey/uuid: ^3.6
Requires (Dev)
- mockery/mockery: ^0.9.9
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2024-09-28 01:49:40 UTC
README
为应用程序请求生成唯一的标签或标识符(即 TraceTag),以便通过应用程序进行跟踪。
将其添加到您的应用程序日志或任何其他位置,以更好地了解哪些日志信息属于同一请求。
包含一个 monolog 处理器,可以自动将 TraceTag 添加到您的日志中。
请注意,这仍然是一个非常正在进行的工程!
目前仅与 Laravel 5.4 进行了测试。
使用场景
-
聚合属于特定请求的所有日志
这正是 TraceTag 核心功能的内容:为 单个请求 提供一个唯一的标识符。TraceTag 对客户端没有任何了解,因此将在下一个请求中生成一个新的标签。
-
聚合属于特定客户端的所有日志
这需要您的一些工作:您将不得不告诉 TraceTag 在来自同一客户端的后续请求上使用哪个标签。
该包包含一个中间件(默认禁用)以帮助您完成此操作。它允许通过 HTTP 标头(默认:"X-Trace-Tag")或输入字段(默认:"_trace_tag")从外部设置 TraceTag。然后,TraceTag 库将存储提供的值,并在后续调用(在同一 HTTP 请求中)时返回该值。
中间件还将附加一个 HTTP 标头到响应中("X-Trace-Tag")。您的工作是包含返回的 X-Trace-Tag 值在客户端的下一个 HTTP 请求中。通过这样做,可以为同一客户端的多个 HTTP 请求跟踪相同的 TraceTag。
您可以选择让 TraceTag 库首次生成这样的标签,或者当然,提供自己的。
用法
-
生成并获取 TraceTag
如果没有设置或生成 TraceTag,则调用
tag()
将使用配置的生成器为您生成一个,然后将在每个后续调用tag()
方法时返回相同的 TraceTag。$tag = app()->make(Bonsi\TraceTag\TraceTag::class)->tag(); $tag = TraceTag::tag();
-
设置 TraceTag
该值将在后续调用
tag()
方法时返回。TraceTag::setTag('MY-CUSTOM-TAG');
您还可以从外部设置 TraceTag,例如,在请求之间提供唯一的标签。包含的中间件可以做到这一点。
安装
-
由于该包仍在开发中,请确保您将以下内容添加到您的
composer.json
"minimum-stability": "dev",
-
将包添加到您的 composer.json
composer require bonsi/laravel-tracetag
-
更新 composer
composer update
-
将 ServiceProvider 添加到您的 app/config.php
'providers' => [ ... /* * Package Service Providers... */ Bonsi\TraceTag\TraceTagServiceProvider::class, ...
-
一些生成器需要额外的 composer 包
- RandomInt: 不需要额外包
- Uuid4: ~~ramsey/uuid@~3.0~~ 该依赖项现在定义为必需。尽管只有在使用 Uuid4Generator 时才需要,但在 composer 的 "suggests" 列表中将其作为 "optional" 依赖项添加似乎并不合适。在这里的最佳做法是将生成器从该包中提取出来,创建自己的 composer 包,以便在每个生成器的 composer.json 中指定各自的依赖项。但由于生成器只有大约 10 行代码,我认为这目前是过度设计。
-
发布配置文件
获取您自己的可定制配置文件以更改默认设置
php artisan vendor:publish --provider="Bonsi\TraceTag\TraceTagServiceProvider"
这将复制一个可定制的配置文件到
config/tracetag.php
。
概念
-
生成器:负责生成 TraceTag 的类。包括:Uuid4 和 RandomInt。
示例生成器标签
- RandomInt:9208221171113638741
- Uuid4:857fac7b-1a0a-491b-9235-5214e6819351
- 或者:自行创建(通过实现 Generator 接口)
-
集成:负责将 TraceTag 注入应用程序的各个部分的类。包括:用于将 TraceTag 添加到日志的 Monolog 处理器。
待办事项
- 添加中间件以将 TraceTag 作为头部添加
- 添加外观(facade)
- 添加测试
- 添加更多生成器
- 添加更多集成
集成
Monolog
默认情况下已经启用将 TraceTag 添加到 Monolog 日志记录器的功能。TraceTag 将被添加到 Monolog 的 'extra' 字段。