Веб-приложения Azure и, соответственно, функции Azure позволяют отправлять сообщения журнала в хранилище больших двоичных объектов, как указано в разделе конфигурации «диагностические журналы».
Однако экземпляр ILogger по умолчанию, который вы передаете реализации C # Functions (v2), игнорирует этот параметр.Вместо этого кажется, что вам нужно собрать регистратор вручную, чтобы использовать эту функцию, как показано ниже.Обратите внимание, что вам нужно добавить Microsoft.Extensions.Logging.AzureAppServices
из NuGet для компиляции.
[FunctionName("myfun")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequest req,
ILogger log)
{
log.LogInformation("This does not end up in the app log.");
var factory = new LoggerFactory().AddAzureWebAppDiagnostics();
var log2 = factory.CreateLogger("MyFun");
log2.LogInformation("This *does* end up in the app log, if configured.");
log2.LogError("Fake error for testing logging functionality (2)");
}
Мой вопрос: есть ли более элегантный способ получить регистратор, который пишет в сконфигурированное хранилище BLOB-объектов App Log?Я ожидал бы, что log
, переданный функции, уже будет иметь эту функцию (возможно, вызванную наблюдением, что журнал приложения настроен), но по умолчанию это не так, и я не вижу четкого пути к тому, какчтобы добавить его, ни с помощью конфигурации, ни путем замены аргумента ILogger log
чем-то другим.