digitalrevolution/symfony-trace-bundle

为您的 Symfony 应用程序添加跟踪功能。

安装次数: 11,392

依赖项: 0

建议者: 0

安全性: 0

星级: 3

关注者: 1

分支: 2

开放问题: 1

类型:symfony-bundle

v0.7.0 2024-07-04 08:26 UTC

This package is auto-updated.

Last update: 2024-09-04 14:34:22 UTC


README

Minimum PHP Version Minimum Symfony Version Run tests

Symfony Trace Bundle

基于 chrisguitarguy/RequestIdBundle

这将为您的 Symfony 应用程序添加跟踪 ID。为什么?这是一种在日志中添加一些附加信息并向用户展示的好方法。跟踪 ID 将在以下位置可用:

  • Monolog 日志消息
  • 请求 -> 响应
  • 控制台命令
  • Twig 扩展
  • HttpClient 请求(默认禁用)
  • Messenger 消息(默认禁用)
  • Sentry 报告(默认禁用)

安装

使用 Composer

composer require digitalrevolution/symfony-trace-bundle

然后,在您的 /config/bundles.php 中启用此捆绑包

# /config/bundles.php
<?php

return [
    ...
    DR\SymfonyTraceBundle\SymfonyTraceBundle::class => ['all' => true],
];

配置

默认情况下,该捆绑包将使用 W3C TraceContext 标准来接收和传递 traceId。
有关配置详细信息,请参阅: TraceContext 配置

还可以配置捆绑包以设置自定义请求/响应头和自定义 ID 生成器。
在 /docs 页面上阅读有关可用配置选项的更多信息:TraceId 配置

工作原理

当请求到达时,它会检查包含 traceId 的请求头。如果存在,则该头部的值将在整个捆绑包中使用。这使得您可以使用堆栈中更高位置的 trace ID(如 web 服务器本身)。

如果没有找到 trace ID,则由 TraceIdGeneratorInterface 生成一个。在 tracecontext 模式下,ID 将根据 TraceContext 标准生成。默认生成器在 traceId 模式下创建版本 4 UUID。

在返回过程中,还可以使用上述值在响应上设置响应头。

头部是可配置的。请参阅上面的 配置。内部还会生成一个事务 ID。该 ID 用于标识单个请求。

Monolog 集成

有一个 monolog Processor 会将跟踪 ID 和事务 ID 添加到记录的 extra 数组中。可以通过将配置中的 enable_monolog 设置为 false 来关闭此功能。

要在日志中使用跟踪 ID,请将 %extra.trace_id% 包含在格式化程序中。要在日志中使用事务 ID,请将 %extra.transaction_id% 包含在格式化程序中。以下是从此捆绑包的测试中获取的配置示例。

# /config/services.php
$services->set('trace_id_formatter', LineFormatter::class)
    ->arg('$format', "[%%datetime%%][%%extra.trace_id%%][%%extra.transaction_id%%] %%channel%%.%%level_name%%: %%message%% %%extra%%\n")
    ->arg('$dateFormat', "Y-m-d\TH:i:s");
# /config/packages/monolog.php
$monolog->handler('main')
        ->type('stream')
        ->path('%kernel.logs_dir%/error.%kernel.environment%.log')
        ->level('debug')
        ->formatter('trace_id_formatter')        
        ->channels()->elements(["!event"]);

Messenger 集成

当启用时,将向消息的 Envelope 中添加分发器进程的完整跟踪数据。在消费者端,将跟踪数据应用于正在运行的消费者进程。一旦处理了 Envelope,值将重置为消费者进程的原始值(如果有)。

Twig 集成

默认情况下,此捆绑包将为您的 twig 环境添加全局 trace_idtransaction_id 函数。要在捆绑包配置中禁用此功能,请将 enable_twig 设置为 false

以下是一个模板示例。

<!DOCTYPE html>
<html>
    <head>
        <title>Hello, World</title>
    </head>
    <body>
        <h1>{{ trace_id() }}</h1>
        <h2>{{ transaction_id() }}</h2>
    </body>
</html>

HttpClient 集成

默认情况下,此组件将检查带有http_client.trace_id标签的服务,并使用TraceAwareHttpClient进行装饰。当启用tagDefaultClient时,默认的symfony http客户端也将被标记并装饰。这将向所有标记客户端的出站请求添加跟踪头。在traceId模式下,可以通过header配置选项更改头名称。

Sentry集成

当启用时,此组件将向Sentry报告添加trace_idtransaction_id标签。

关于我们

在123inkt(Digital Revolution B.V.的一部分),每天都有超过50名开发专业人士在改进我们的内部ERP和我们的几个商店。你想加入我们吗?我们在寻找开发者