使用流畅的API跟踪异步Azure操作

时间:2018-08-30 17:02:25

标签: azure azure-api-management azure-management-api azure-fluent-api

我知道您可以使用标准API:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-async-operations

来跟踪正常操作

但是,我想知道是否存在一种已知的方法来利用Fluent Azure Management Libraries来跟踪长时间的异步操作(例如VM操作等)。例如,VM重新启动方法是void Task,它不返回操作ID进行跟踪。

async Task IVirtualMachineScaleSetVM.RestartAsync(CancellationToken cancellationToken)
{
  await this.RestartAsync(cancellationToken);
}

干杯!

1 个答案:

答案 0 :(得分:1)

AFAIK,似乎很难跟踪不返回operationId的VM重新启动状态。

登录用于.NET的流畅的Azure管理库将利用基础的AutoRest服务客户端跟踪。

创建一个实现Microsoft.Rest.IServiceClientTracingInterceptor的类。此类将负责拦截日志消息并将其传递给您使用的任何日志记录机制。

class ConsoleTracer : IServiceClientTracingInterceptor
{
    public void ReceiveResponse(string invocationId, HttpResponseMessage response) { }
}

在创建Microsoft.Azure.Management.Fluent.Azure对象之前,通过调用IServiceClientTracingInterceptor初始化上面创建的ServiceClientTracing.AddTracingInterceptor(),并将ServiceClientTracing.IsEnabled设置为 true 。创建Azure对象时,请使用.WithDelegatingHandler().WithLogLevel()方法将客户端连接到AutoRest的服务客户端跟踪。

ServiceClientTracing.AddTracingInterceptor(new ConsoleTracer());
ServiceClientTracing.IsEnabled = true;

var azure = Azure
    .Configure()
    .WithDelegatingHandler(new HttpLoggingDelegatingHandler())
    .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
    .Authenticate(credentials)
    .WithDefaultSubscription();

有关更多详细信息,您可以参考此article