我知道您可以使用标准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);
}
干杯!
答案 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。