shipsaas/shipsaas-logger

Laravel ShipSaasLogger 通过在每个请求上标记唯一的ID,实现了跨服务器的请求跟踪。大幅提高生产调试效率。

1.0.0 2023-10-25 12:45 UTC

This package is auto-updated.

Last update: 2024-09-25 15:16:57 UTC


README

Build & Test (PHP 8.2) codecov

Laravel ShipSaasLogger 通过为给定请求的每个日志记录标记唯一的ID 🆔 来实现跨服务器的请求跟踪。

大幅提高您的生产调试效率 ⚒️。

此外,ShipSaasLogger 解决了当您有大量流量时出现的 缺失日志 问题 😎。使生产日志更加可靠,工程师不必再喊“我找不到日志” 🔥。

ShipSaaS Logger

支持

  • Laravel 10+
  • PHP 8.2+

安装

安装库

composer require shipsaas/shipsaas-logger

使用

我们发布了一个名为 shipsaas-logger 的新日志驱动器,它处理

  • 根据 requestId 创建日志文件,例如:7a559daf-f1fe-4a97-8eb8-40d0907c986b.log
  • 在此处写入基于请求的日志
  • 如果 requestId 不存在,则回退到默认日志文件

因此,它解决了缺失日志的问题,因为我们有 独立的日志文件,而不是将日志写入一个文件(在高流量时将混乱日志) 🚀

如今,我们只需告诉 Sumologic(或 Cloudwatch、DataDog 等)同步您的日志文件夹(整个文件夹) 🔥。所有日志都将同步到云端。

设置 config/logging.php

添加一个名为 shipsaas-logger 的新通道,并根据您的需求更改配置

'shipsaas-logger' => [
    'driver' => 'shipsaas-logger',
    'path' => storage_path('logs/requests/laravel.log'), // can change to your desired path
    'default_log_file' => storage_path('logs/laravel.log'), // can change to your desired path
    'id-type' => 'ulid', // uuid, orderedUuid, ulid
    'use_json_format' => false, // set to true to write log as JSON
],

更新 .env

LOG_CHANNEL 更改为 shipsaas-logger

LOG_CHANNEL=shipsaas-logger

玩耍

现在您已经准备好了,点击一些请求并尝试一下 😎。

class TransferController extends BaseController
{
    public function transfer(): JsonResponse
    {
        Log::info('begin transfer', [
            'amount' => ...,
            'recipient' => ...,
        ]); // this log will have uniqueRequestId
        
        // ...
        
        
        Log::info('transferred', [
            'amount' => ...,
            'recipient' => ...,
            'trasaction_id' => ...,
        ]); // this log will have uniqueRequestId
    }
}

祝贺您,您的应用程序不再有“缺失日志”的痛苦了 😉。

使用(简约风格)

注入唯一请求 ID 日志处理器

只需将此代码段放入您的 AppServiceProvider

// AppServiceProvider.php

use ShipSaasUniqueRequestLogger\UniqueRequestIdLoggerInitiator;

public function boot(): void
{
    $this->app->booted(fn () => UniqueRequestIdLoggerInitiator::init());
}

玩耍

现在您已经注入了 ShipSaaS Logger,点击一些请求并尝试一下 😎。

注意:简约风格仅将唯一请求ID生成注入到您的应用程序中,它 不会对缺失日志问题有任何改进

测试

运行 composer test 😆

贡献者

  • Seth Phat

贡献与支持项目

请随时提交任何 PR,请遵循 PSR-1/PSR-12 编码约定,并且测试是必须的。

如果这个包对您有帮助,请给它一个 ⭐️⭐️⭐️。谢谢!

许可证

MIT 许可证