如何在Azure Functions V2中登录到Azure应用日志?

Luc*_*c C 5 c# azure azure-functions

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

但是,传递给C#函数(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)");
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ouk 2

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

    traces
    where appName == "YourAppName"
Run Code Online (Sandbox Code Playgroud)

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