Laravel 添加了一个新的 Context
服务来为当前请求定义上下文数据。上下文数据包含在该请求的所有日志条目中,排队的作业也将保留相同的上下文数据。使用上下文数据可以轻松地追踪特定请求的代码执行情况以及应用程序中任何分布式流程
// In a middleware...Context::add('hostname', gethostname());Context::add('trace_id', (string) Str::uuid()); // In a controller... Log::info('Retrieving commit messages for repository [{repository}].', [ 'repository' => $repo,]); Http::get('https://github.com/...'); /*Log entry example: [2024-01-19 04:20:06] production.INFO: Retrieving commit messages for repository [laravel/framework]. {"repository":"laravel/framework"} {"hostname":"prod-web-1","trace_id":"a158c456-d277-4214-badd-0f4c8e84df79"}*/
上下文数据还支持堆栈等概念,您可以将数据推送到同一个上下文中,有效地追加数据
Event::listen(function (JobQueued $event) { Context::push('queued_job_history', "Job queued: {$event->job->displayName()}");}); Context::get('queued_job_history'); // [// "Job queued: App\Jobs\MyFirstJob",// "Job queued: App\Jobs\MySecondJob",// "Job queued: App\Jobs\MyThirdJob",// ]
如果您想了解更多关于此功能的信息,请查看 Pull Request 描述。感谢 Tim MacDonald 为框架创建了此功能!