Graphql 如何在HotChocolate中记录解析程序/操作名称和持续时间?

Graphql 如何在HotChocolate中记录解析程序/操作名称和持续时间?,graphql,hotchocolate,Graphql,Hotchocolate,我试图记录一些基本的gql方法详细信息——解析器/操作名称和持续时间。我已经开始考虑使用.AddHttpRequestInterceptorcontext、executor、builder、ct 从构建器中获取信息,但即使我可以在调试器中看到它,方法名称仍隐藏在私有成员中,如: HotChocolate.Execution.QueryRequestBuilderbuilder.\u query.Document.Definitions[0]。SelectionSet.Selections[0]。

我试图记录一些基本的gql方法详细信息——解析器/操作名称和持续时间。我已经开始考虑使用.AddHttpRequestInterceptorcontext、executor、builder、ct 从构建器中获取信息,但即使我可以在调试器中看到它,方法名称仍隐藏在私有成员中,如: HotChocolate.Execution.QueryRequestBuilderbuilder.\u query.Document.Definitions[0]。SelectionSet.Selections[0]。Name.Value

我相信有一种更简单、更好的方法可以挂接到管道中,以获取方法名并记录调用持续时间

我发现了一篇关于使用DefaultGraphQleExecuter的GraphQL.Net的文章- 带有诊断的公共类GraphQlExecutor:DefaultGraphQLExecuter 它在 任务执行同步 ,看起来很理想

我将登录到AppInsights,但这与现在无关,我只想先获取信息。
我使用的是v11.0.8

您需要的是DiagnosticEventListener

您只需扩展这个基类并重写日志记录所需的方法

公共类CustomDiagnosticListener:DiagnosticEventListener { 公共覆盖IActivityScope ExecuteRequestContext上下文 { 回程空镜; } 公共虚拟IActivityScope ResolveFieldValueIMDDleWareContext上下文 { 回程空镜; } } 要使用此诊断侦听器,必须将其添加到架构中

services.AddGraphQLServer ... .AddDiagnosticEventListener 如果您有监听器必须重新爱上的依赖项,您必须手动重新爱上它们:

services.AddGraphQLServer ... .AddDiagnosticEventListener sp=>new CustomDiagnosticListener sp.GetApplicationService
你要找的是诊断专家

您只需扩展这个基类并重写日志记录所需的方法

公共类CustomDiagnosticListener:DiagnosticEventListener { 公共覆盖IActivityScope ExecuteRequestContext上下文 { 回程空镜; } 公共虚拟IActivityScope ResolveFieldValueIMDDleWareContext上下文 { 回程空镜; } } 要使用此诊断侦听器,必须将其添加到架构中

services.AddGraphQLServer ... .AddDiagnosticEventListener 如果您有监听器必须重新爱上的依赖项,您必须手动重新爱上它们:

services.AddGraphQLServer ... .AddDiagnosticEventListener sp=>new CustomDiagnosticListener sp.GetApplicationService