Функция Azure Подробное ведение журнала при внутренней ошибке сервера - PullRequest
2 голосов
/ 29 мая 2019

У меня есть функция Azure v2 с триггером HTTP. Иногда он возвращает 500 без дополнительной информации. Я хотел бы настроить его для регистрации более подробной информации, включая сообщение об ошибке и трассировку стека.

Я попытался настроить свой host.json так:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "default": "Trace"
    }
  }
}

, но это не привело к более подробной информации при локальном запуске.

Из-за встроенных настроек ведения журнала мне кажется, что я не могу, я пытаюсь получить верхний уровень try/catch, но не могу понять, как вернуть и код состояния 500 и объект исключения.

[FunctionName("Http-UploadFiles")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "uploadFiles")] HttpRequest request,
    ILogger log)
{
    try
    {
        var requestBody = await new StreamReader(request.Body).ReadToEndAsync();
        var body = JsonConvert.DeserializeObject<JObject>(requestBody);

        var inventorySetGuid = Guid.Parse(body["inventorySetGuid"].ToString());
        var files = body["files"].Select(FileComponentUtilities.GetFile).ToList();
        var componentsAndErrors = await FileComponentUtilities.InsertSuitableComponentFiles(files, inventorySetGuid);

        return new JsonResult(componentsAndErrors, StorageFramework.Storage.SerializerSettings);
    }
    catch (Exception exception)
    {
        return new StatusCodeResult(500);
    }
}

Этот код возвращает код состояния 500, но не возвращает объект исключения. Я не могу найти подходящий IActionResult для возврата 500 с объектом исключения. Как я могу сделать это для этой функции Azure v2?

1 Ответ

2 голосов
/ 29 мая 2019

Вы можете вернуть ContentResult, который позволяет вам установить любой код состояния, контент и тип контента.

return new ContentResult
{
    StatusCode = 500,
    Content = "Something went wrong"
};

Но не используйте это для возврата трассировки стека!Это проблема безопасности вашего приложения, и есть более эффективные способы ... Включите Application Insights в вашем функциональном приложении и используйте его, чтобы увидеть ваши следы и ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...