Я создал функцию Azure Blob Trigger и хотел иметь возможность создавать почтовые оповещения, когда у меня есть исключение, и среди информации, отправляемой в почтовом оповещении, должно быть имя файла, в котором возникло исключение.
Я заметил, что исключения автоматически регистрируются в Azure, но я не нашел способа настроить сообщение или информацию, отправляемую вместе с исключением. Поэтому я решил внедрить службу телеметрии в свое приложение-функцию и добавить имя файла в качестве настраиваемого свойства, как вы можете видеть в приведенном ниже коде:
public class Function1
{
private readonly IGremlinService _gremlinService;
private readonly TelemetryClient _telemetryClient;
public Function1(IGremlinService gremlinService, TelemetryConfiguration telemetryConfiguration)
{
this._gremlinService = gremlinService;
this._telemetryClient = new TelemetryClient(telemetryConfiguration);
}
[FunctionName(nameof(Function1))]
public async Task Run([BlobTrigger("files/{directory}/{name}.00.pdf", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, ILogger logger)
{
try
{
//some code not related to the issue
}
catch (Exception e)
{
var properties = new Dictionary<string, string>
{{"Filename", name}};
_telemetryClient.TrackException(e, properties);
if (e is ResponseException)
{
ResponseException re = (ResponseException) e;
var statusCode = (long) re.StatusAttributes["x-ms-status-code"];
_telemetryClient.TrackTrace("Error on file " + name + ". Status code: " + statusCode + " " + re.StackTrace, SeverityLevel.Error, properties);
}
else
{
_telemetryClient.TrackTrace("Error on file " + name, SeverityLevel.Error, properties);
}
throw;
}
}
}
}
Но я все еще не могу настроить сообщение, чтобы предоставить пользователю дополнительную информацию. Я знаю, что вместо этого могу отправлять предупреждения о сообщениях трассировки и отправлять настраиваемые сообщения таким образом, и в настоящее время я этим и занимаюсь, но мне было бы удобнее отправлять предупреждения об исключениях.
Моя вторая проблема заключается в том, что мои исключения по-прежнему автоматически регистрируются в журнале службы телеметрии, и по какой-то причине я не могу понять, что они регистрируются дважды, как вы можете видеть на снимке экрана ниже из Application Insights:
Есть ли способ отключить автоматическое ведение журнала исключений? Или есть способ настроить эти сообщения об исключениях, о которых я не знаю, вместо использования службы телеметрии?
ILogger
с ведением журнала структуры, и с его помощью вы можете регистрировать все соответствующие параметры, не имеяTelemetryClient
. - person user1672994   schedule 15.01.2021