vicky, основываясь на документе Отказоустойчивость и опциях в интерфейсе АПД, мы можем выбрать только 3 варианта:
Только "Skip and log incompatible rows"
может сохранить журнал ошибок в хранилище BLOB-объектов Azure, которое настроено нами. Нет прямого способа сохранить журнал ошибок в хранилище Azure, если вам нужно выбрать "abort activity on first incompatible row"
.
Итак, мой обходной путь - добавить действие функции Azure за операцией копирования, если копированиеСостояние активности - «Сбой», например:
Я специально создаю ситуацию с ошибкой для операции копирования, и вы можете просмотреть выходные данные операции копирования, которая содержитсообщение об ошибке:
Затем вы можете отослать это сообщение в теле функции лазурной системы по @activity('Copy data1').output
Внутри функции Azure вы можете сохранить ее в хранилище BLOB-объектов, используя код SDK.
Можете ли вы поделиться кодом для функции Azure, чтобы сохранитьинформация об ошибках в хранилище больших двоичных объектов, поскольку я не очень разбираюсь в c #.
Я следовал этому учебнику , чтобы протестировать код на c # для вас:
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage.Blob;
namespace FunctionApp2
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
[Blob("test/error.txt", FileAccess.ReadWrite)] CloudBlockBlob blob,
TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
await blob.UploadTextAsync(name);
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
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);
}
}
}
Параметр name
- это error message
, который необходимо передать. Затем он будет сохранен в test/error.txt
путь.