我在未来项目的原型中使用了 Durable Azure Function。
基本上,我有一个由启动 Orchestrator 的 HTTPPOST
请求触发的客户端 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 和 Client Functions 都被赋予了一个ILogger
但不是 Activity 函数;如文档中所述(特定参数或实例),Activity 函数仅获取一个参数。而且我不认为声明这些方法的静态类可以保留对它的引用。DurableActivityContext
ILogger
我知道活动函数应该执行一项小工作,但如果我能够记录如果出现问题时使用适当的值调用了活动(它会:)),我会更舒服。
问题
Activity 如何访问ILogger
?