Serilog Azure 函数 V3

hel*_*rld 6 logging dependency-injection serilog azure-functions

我想知道如何在 Azure 函数中使用 Serilog。我在我的函数中创建了一个启动类,设置如下:

 var loggerConfiguration = new LoggerConfiguration()
            .WriteTo.Console()
            .CreateLogger();

 builder.Services.AddLogging(op => op.AddSerilog(loggerConfiguration));
Run Code Online (Sandbox Code Playgroud)

如何将 serilog 中的 ILogger 注入到我的函数中?

using Serilog;

namespace LogFunction

public class XX
{
    [FunctionName("XX")]
    public void Run([TimerTrigger("*/60 * * * * *")]TimerInfo myTimer, ILogger log)
    {
        log.Information("Log this object {Car}", car); //using serilog not Microsoft.Extensions.Logging
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的,我引用的是来自 Serilog 而不是 Microsoft Logging 的 ILogger。

Seb*_*atz 1

一种可能的解决方案是您将记录器注入到函数类的构造函数中。

public class XX
{
    private ILogger _logger;
    public XX(ILogger logger)
    {
        _logger = logger;
    }

    [FunctionName("XX")]
    public void Run([TimerTrigger("*/60 * * * * *")]TimerInfo myTimer)
    {
        _logger.Information("Log this object {Car}", car); //using serilog not Microsoft.Extensions.Logging
    }
}
Run Code Online (Sandbox Code Playgroud)