bonsi/laravel-tracetag

使用标签追踪应用程序中的请求

dev-master 2017-07-03 09:21 UTC

This package is not auto-updated.

Last update: 2024-09-28 01:49:40 UTC


README

Build Status

为应用程序请求生成唯一的标签或标识符(即 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' 字段。