Я работаю над простым триггером Blob, который переносит CSV-файлы из хранилища BLOB-объектов в SQL.
Функциональность моей функции работает, но я хочу добавить Application Insights в Azure, чтобы иметь возможность получать уведомления об исключениях и информацию о входе в систему.Я просто не могу обернуть голову вокруг этого.Я несколько дней гуглял и читал множество статей, но, похоже, не могу найти ничего, что работает.Я новичок в Azure и в программировании в целом, поэтому некоторые примеры немного сложно понять.
Я добавил Application Insights к своей функции на портале и добавил Instrumentationkey в appsettings этой функции.Когда я использую Tracewriter в функции, я могу опубликовать ее, и функции работают (кроме Application Insights не работает).
Когда я переключаюсь на ILogger (что рекомендуется) и публикую, я получаю ноль информации в моем Application Insights, и мои функции вообще не работают.
Я прочитал одну статью о том, что вы можетепросто добавьте Application Insights и istrumentationkey в свою функцию, затем добавьте пакет nuget и он заработает.В другой статье есть сложный пример, где они создают что-то в классе startup.cs.Просто много различной информации, и у меня нет опыта, чтобы узнать, что правильно или неправильно для моего конкретного приложения.
Моя функция в настоящее время выглядит так (.NET Core 2.1):
public static class BlobTrigger
{
[FunctionName("BlobToSql")]
public static async Task Run([BlobTrigger("myblobstorage", Connection = "AzureWebJobsStorage")]
CloudBlockBlob blob, ILogger log)
{
Exception exception = null;
log.LogInformation($"BlobTrigger processed a request for blob: {blob.Name}");
var csvToSqlHandler = new CsvToSqlHandler();
if (!blob.Name.EndsWith(".CSV"))
{
log.LogError(($"Blob '{blob.Name}' doesn't have the .csv extension. Skipping processing."));
return;
}
try
{
var dataTable = await csvToSqlHandler.CreateDataTableFromCsv(blob);
csvToSqlHandler.FormatDataTable(dataTable, blob.Name);
csvToSqlHandler.FormatDataTableColumns(dataTable, blob.Name);
await csvToSqlHandler.DataTableToSql(dataTable, blob.Name);
}
catch (Exception e)
{
exception = e;
log.LogError($"{blob.Name} failed. Exception: {exception.Message}");
}
if (exception == null)
{
await blob.DeleteAsync();
}
log.LogInformation($"Blob '{blob.Name}' successfully executed!");
}
}
Используя это:
using System;
using System.Threading.Tasks;
using BlobToSqlConverter.Handlers;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Blob;
Я просто хочу увидеть некоторые журналы в Application Insights на Azure и буду счастлив, также было бы неплохо, если бы мои функции не умирали каждый раз, когда я публикую с помощью ILogger.
Я был бы очень признателен, если бы кто-нибудь нашел время, чтобы помочь мне с этим.