forecho/laravel-trace-log

laravel的跟踪日志

v1.1.3 2022-08-11 03:08 UTC

This package is auto-updated.

Last update: 2024-09-11 07:44:55 UTC


README

Latest Stable Version Latest Unstable Version Total Downloads License

安装

composer require forecho/laravel-trace-log

如果你使用Lumen,需要在 bootstrap/app.php 文件中添加服务提供者。

$app->register(Forecho\LaravelTraceLog\TraceLogServiceProvider::class);

配置

此步骤是可选的

php artisan vendor:publish --provider="Forecho\LaravelTraceLog\TraceLogServiceProvider"

如果你使用Lumen,需要在 config 目录中添加配置文件。

cp vendor/forecho/laravel-trace-log/config/tracelog.php config/

并且你需要在 bootstrap/app.php 文件中添加代码。

$app->configure('tracelog');

注意

  • log_filter_half_hide_keys 中对应键的值的位数必须大于2,否则所有数据将被隐藏。
  • 如果配置文件导致错误,过滤功能将无效,可以通过搜索 request_params_filter_key_config_error 来查看错误日志。

additional_fields 是一个数组,包含将要添加到日志中的额外字段。例如

'additional_fields' => [
    'user_id' => [App\Models\User::class, 'getId'],
    'tag' => 'test', // value can use closure、string、array
  ],

getId() 方法添加到 User 模型中,字段的值将是方法的返回值。

namespace App\Models;

class User 
{
    public static function getId(): ?int
    {
        return data_get(Auth::user(), 'id');
    }
}

用法

中间件(可选)

修改 App\Http\Kernel.php 文件以添加 TraceLogMiddleware 中间件。

use Forecho\LaravelTraceLog\Middleware\TraceLogMiddleware;

protected $middlewareGroups = [
    // ...

    'api' => [
        // ...        
        'request.tracelog'
    ],
];


protected $routeMiddleware = [
    // ...    
    'request.tracelog' => TraceLogMiddleware::class
];

记录

use Forecho\LaravelTraceLog\TraceLog;

TraceLog::warning('This is a warning message.', ['foo' => 'bar']);
TraceLog::error('This is an error message.', ['foo' => 'bar']);
TraceLog::info('This is an info message.', ['foo' => 'bar']);
TraceLog::debug('This is a debug message.', ['foo' => 'bar']);

获取 Trace ID

use Forecho\LaravelTraceLog\TraceLog;

TraceLog::getTraceId();

Curl 请求

如果你希望下一个系统使用相同的 trace_id,你需要在 header 中添加 trace_id

use Forecho\LaravelTraceLog\TraceLog;

$key = config('tracelog.trace_id_header_key');
$headers = [
  $key => TraceLog::getTraceId(),
]