0

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

但是我想知道是否有一种已知的方法可以利用Fluent Azure 管理库来跟踪长异步操作,例如 VM 操作等。例如,VM 重新启动方法是一个 void Task,它不返回用于跟踪的操作 ID。

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

干杯!

4

1 回答 1

1

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

登录 .NET 的 fluent Azure 管理库会利用底层AutoRest服务客户端跟踪。

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

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

在创建对象之前,通过调用并设置为trueMicrosoft.Azure.Management.Fluent.Azure来初始化您在上面创建的对象。创建 Azure 对象时,包括和方法以将客户端连接到 AutoRest 的服务客户端跟踪。IServiceClientTracingInterceptorServiceClientTracing.AddTracingInterceptor()ServiceClientTracing.IsEnabled.WithDelegatingHandler().WithLogLevel()

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

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

更多细节,你可以参考这篇文章

于 2018-08-31T06:04:08.293 回答