首页 > 解决方案 > 如何在 Azure Functions V2 中登录到 Azure 应用程序日志?

问题描述

Azure Web 应用程序以及扩展的 Azure Functions 允许将日志消息发送到“诊断日志”配置部分中配置的 Blob 存储。

但是,传递给 C# Functions (v2) 实现的默认 ILogger 实例会忽略该设置。相反,您似乎需要手动构建记录器才能使用此功能,如下所示。请注意,您需要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)");
}

我的问题:有没有更优雅的方法来获取写入配置的 App Log blob 存储的记录器?我原以为log传递给函数的函数已经具有此功能(可能通过观察配置了应用程序日志来触发),但默认情况下它没有,而且我看不到如何添加它的明确路径,既不是通过配置,也不是通过用ILogger log其他东西替换参数。

标签: c#azureazure-functions

解决方案


对于 Azure Function V2,您可以使用注入的 ILogger 将所有日志记录为应用程序见解,然后您可以从 azure 门户> Application Insights > 转到您的函数应用程序,然后选择分析(日志)> 然后您可以使用此查询检索所有日志:

    traces
    where appName == "YourAppName"

对于旧功能 V2,您可以使用注入的 traceWriter 并将其与任何记录器集成,以便您可以在与此功能应用程序相关的自动创建的 blob 存储表中找到您的日志,您可以使用 Microsoft Azure 存储资源管理器轻松检查它。


推荐阅读