gpt4 book ai didi

c# - 如何从事件函数获取 ILogger?

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:31 24 4
gpt4 key购买 nike

我正在未来项目的原型(prototype)中使用 Durable Azure Function。

基本上,我有一个由启动 Orchestrator 的 HTTP POST 请求触发的客户端 Azure 函数。然后,Orchestrator 决定触发一个 Activity。没什么复杂的。

这是我正在做的事情的示例:

[FunctionName("ClientFunction")]
public static async Task<HttpResponseMessage> OnHttpTriggerAsync([HttpTrigger(AuthorizationLevel.Anonymous, "post")]
HttpRequestMessage request, [OrchestrationClient] DurableOrchestrationClient starter, ILogger logger)
{
// Triggers the orchestrator.
string instanceId = await starter.StartNewAsync("OrchestratorFunction", null);

return new HttpResponseMessage(HttpStatusCode.OK);
}


[FunctionName("OrchestratorFunction")]
public static async Task DoOrchestrationThingsAsync([OrchestrationTrigger] DurableOrchestrationContext context, ILogger logger)
{
// Triggers some serious activity.
await context.CallActivityAsync("ActivityFunction", null);
}

[FunctionName("ActivityFunction")]
public static Task DoAnAwesomeActivity([ActivityTrigger] DurableActivityContext context)
{
// Short & Sweet activity...
// Wait... Where's my logger?
}

Orchestrator 和客户端函数都被赋予了一个 ILogger,但事件函数没有;如stateddocumentation (无论是特定参数还是 DurableActivityContext 实例),Activity 函数仅获取一个参数。而且我并不认为声明这些方法的静态类可以保留对该 ILogger 的引用。

我知道事件函数应该执行一项小工作,但如果我能够记录在出现问题时使用适当的值调用事件(并且它会:)),我会更舒服。

问题

Activity 如何访问 ILogger

最佳答案

It is not possible to pass multiple parameters to an activity function directly. The recommendation in this case is to pass in an array of objects or to use ValueTuples objects in .NET.

这个restriction您关心的是我们从 Orchestrator 传递到 Activity Function 的参数。这并不意味着我们只能在 Activity 方法签名中使用一个参数。请随意添加 ILogger 并根据需要完成您的工作。

关于c# - 如何从事件函数获取 ILogger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com