etsglobal / log-bundle
v5.0.2
2024-09-24 15:43 UTC
Requires
- php: ^8.3
- ext-json: *
- graylog2/gelf-php: ^2.0
- symfony/config: ^7.0
- symfony/console: ^7.0
- symfony/dependency-injection: ^7.0
- symfony/http-client: ^7.0
- symfony/http-kernel: ^7.0
- symfony/monolog-bundle: ^3.10
Requires (Dev)
Suggests
- symfony/http-client: Allow token forwarding through Symfony's HttpClient HTTP calls
README
为所有 ETSGlobal Symfony 应用程序提供规范化的日志和跟踪功能。
概述
主要功能
- 自动日志注入。
- 提供
TokenCollection
工具,以启用下游应用程序从应用程序到应用程序的请求跟踪。 - 自动配置
global
和process
token 跟踪,以处理传入的 HTTP 请求/响应以及长时间运行的过程。 - 自动将应用程序名称和跟踪令牌丰富到日志上下文中。
- 处理器用于更改异常的日志级别,例如 Symfony 的
NotFoundHttpException
- Slack 处理器:Monolog 的 slack 处理器的扩展版本,具有自定义消息内容和自定义过滤器。
- 提供 Guzzle 中间件,通过 HTTP 调用转发令牌。
- 提供 Symfony HttpClient 装饰器,通过 HTTP 调用转发令牌。
安装
- 安装捆绑包
composer require etsglobal/log-bundle
- 加载捆绑包
// config/Bundles.php return [ ... ETSGlobal\LogBundle\ETSGlobalLogBundle::class => ['all' => true], ... ];
对于 Symfony < 4
// app/AppKernel.php $bundles = [ ... new ETSGlobal\LogBundle\ETSGlobalLogBundle(), ... ];
配置
捆绑包配置
# config/packages/ets_global_log.yaml ets_global_log: app_name: my-app # Used to filter logs by application. slack_handler: token: "slack API token" channel: "#channel-name" jira_url: "example.jira.com" kibana_url: "kibana.example.com/app/kibana" custom_exceptions_levels: My\Custom\Exception: !php/const Monolog\Logger::INFO
Monolog 配置
如果您想使用此捆绑包提供的 Slack 处理器,请添加以下配置
# config/packages/<env>/monolog.yaml monolog: handlers: ... slack_failure: type: 'whatfailuregroup' members: ['slack'] slack: type: 'service' id: 'ets_global_log.monolog.handler.slack' level: "error"
如果您有文件处理器,您可能想使用 token_collection 格式化器来添加跟踪令牌
# config/packages/<env>/monolog.yaml monolog: handlers: ... file: type: "rotating_file" path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug formatter: 'ets_global_log.monolog.formatter.token_collection'
自动日志注入
自动日志注入将尝试在所有带有 ets_global_log.logger_aware
标记的服务中注入日志记录器。服务不喜欢实现 Psr\Log\LoggerAwareInterface
以通过setter注入接收日志记录器。
// src/MyService.php namespace App; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; class MyService implements LoggerAwareInterface { use LoggerAwareTrait; }
# config/services.yaml App\MyService: tags: - { name: "ets_global_log.logger_aware" }
Symfony HttpClient 装饰器
安装 symfony/http-client
composer require symfony/http-client
配置您的范围客户端
framework: http_client: scoped_clients: my.client: base_uri: 'example.com/api/'
就像通常一样,在您的服务中注入 my.client
HttpClient。HttpClientDecorator 将装饰 HttpClient 以自动在请求中注入 token_global
。
Guzzle 中间件
安装 csa/guzzle-bundle
composer require csa/guzzle-bundle
配置具有 "token_global" 中间件的 HTTP 客户端
# config/packages/cas_guzzle.yaml csa_guzzle: profiler: '%kernel.debug%' logger: true clients: foo: config: base_uri: "http://example.com/api" middleware: ['token_global']