2017-08-04 18 views
1

私は、インターフェイスILoggerを使用して、私のAzure関数内にイベントを記録しています。私はそれをAzureに公開し、それをAzureのApplication Insightsに接続することができます。Azure関数でローカルのApplication Insightを使用するにはどうすればよいですか?

開発中に私のVisual Studioのアプリケーション・インサイトにログを見たいと思っています。 hereでは、これはASP.NET Core WebアプリケーションでStartup.csにいくつかのコードを記述することで可能です。 VS 2017のツーリングの新しいプロジェクトテンプレートを使用してAzure関数で同様のことが可能ですか?

私はVS 2017とAzure Function CLI 1.0.0-beta-100を使用しています。

+0

私が知っている限り、Application Insightsに情報を記録する必要がある場合。 Microsoft.ApplicationInsightsパッケージの使用を検討し、InstrumentationKeyを使用してTelemetryClientを作成することをお勧めします。詳細は、この[記事](https://cmatskas.com/azure-functions-custom-logging-with-appinsights/)を参照してください。 –

+1

AzureファンクションはすでにApplication Insightと統合されているため、参照されている記事では、それ自体は廃止されています。しかし、その統合はVisual Studioでは動作しません。VSではログを表示し、ポータルでは表示されません。 – gabomgp

答えて

2

私が知る限り、現時点では、ローカルのazure関数プロジェクトにApplication Insightsを直接追加することはできませんでした。

これは回避策です:

自分で実装する必要があります。 NugetパッケージマネージャーからMicrosoft.ApplicationInsightsをインストールした後。

次に、TelemetryClientを使用して、紺碧にログを送信します。

詳細、あなたはコード以下を参照できます。

[FunctionName("HttpTriggerCSharp")] 
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log) 
    { 


     var appInsights = GetTelemetryClient(); 
     //track an event 
     appInsights.TrackEvent("I am starting now. I'm timer triggered"); 
     // track a numeric value 
     appInsights.TrackMetric("Ticks based on current time", DateTime.Now.Ticks); 
     // track an exception 
     appInsights.TrackException(new Exception($"Random exception at {DateTime.Now}")); 

     // send data to azure 
     appInsights.Flush(); 

     log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); 


     log.Info("C# HTTP trigger function processed a request."); 

     // parse query parameter 
     string name = req.GetQueryNameValuePairs() 
      .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0) 
      .Value; 

     // Get request body 
     dynamic data = await req.Content.ReadAsAsync<object>(); 

     // Set name to query string or body data 
     name = name ?? data?.name; 

     return name == null 
      ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") 
      : req.CreateResponse(HttpStatusCode.OK, "Hello " + name); 
    } 

    private static TelemetryClient GetTelemetryClient() 
    { 
     var telemetryClient = new TelemetryClient(); 
     telemetryClient.InstrumentationKey = "Your InstrumentationKey"; 
     return telemetryClient; 
    } 
} 

}

結果:Azureの機能へのアプリケーションの洞察(AI)テレメトリを追加

enter image description here

1

が簡単で、簡単。

あなたは公式の文書からこれらのtwoの手順が必要です。

  1. Application Insightsインスタンスを作成します。
    • アプリケーションの種類は、一般
    • グラブ
  2. キー計装に設定する必要がありアプリの設定
    • は、アプリケーションの設定を追加するには、機能を更新 - APPINSIGHTS_INSTRUMENTATIONKEY = {計装キー}

しかし、明らかにわからないことは、機能アプリをローカルに、クラウドに移動させる直前に開発している間にAIテレメトリデータをキャプチャする方法です。まず、Azure関数のローカル開発環境prepareが必要です。それであなたはほとんど準備が整いました。上記の2番目の手順をlocal.settings.jsonファイルで繰り返すだけです。だからあなたのファイルはこのように見えるはずです。私は2つのAIインスタンスを持っている私の場合は

{ 
    "IsEncrypted": false, 
    "Values": { 
    "FUNCTIONS_EXTENSION_VERSION": "beta", 
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true", 
    "HOST_NAME": "localhost:7072", 
    "APPINSIGHTS_INSTRUMENTATIONKEY": "11111111-2222-3333-4444-555555555555" 
    }, 
    "Host": { 
    "LocalHttpPort": 7072 
    } 
} 

私はPRODとDEV telemetriesを混同しないように、私のAzureのポータルで、私の地元のdevのENV(local.settings.json)でAPPINSIGHTS_INSTRUMENTATIONKEY値が異なっています。

関連する問題