簡體   English   中英

使用 Azure Function V3,如何將現有的 Ilogger 注入新的 class 文件?

[英]Using Azure Function V3, how do I inject existing Ilogger into new class file?

我創建了一個新的 Azure Function,V3,CORE 3.1,使用 VS2019。 它使用一個基本的 HTTPTrigger。 我創建了一個新的 class 文件,並希望將現有的 Ilogger 注入其中。 如何做到這一點? 我是新手,所以任何幫助將不勝感激。

編輯:

所以終於想通了,把事情復雜化了。 V3 功能已經配置為使用 ILogger 進行日志記錄,根據這篇文章,有一個錯誤會過濾掉使用不以 Function 開頭的類別創建的任何日志: 無法使用通過 DI 提供的 ILogger 實例

我需要做的就是將記錄器注入到 class 中,如下所示:

private readonly ILogger _logger;

        public ClassName(ILogger<ClassName> logger)
        {
            _logger = logger;
        }

然后就像這樣稱呼它:

_logger.LogInformation("Log Message");

我選擇了上述帖子中的選項 1,並將命名空間添加到 host.json 文件中:

"logLevel": {
      "NamespaceName": "Information"
    }

我有一個 Function 將日志寫入 App Insights,我使用 ILogger。

您可以在其他服務/幫助程序類中將 ILogger 與依賴注入一起使用。

public interface IExampleClass
{
    void ExampleMethod();
}

public class ExampleClass : IExampleClass
{
    private readonly ILogger<ExampleClass> _logger;

    public ExampleClass(ILogger<ExampleClass> logger)
    {
        _logger = logger;
    }

    public void ExampleMethod()
    {
       _logger.LogInformation("Example info log");
    }
}

我在啟動文件中啟用日志記錄並注冊 DI。

class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddLogging();
        builder.Services.AddTransient<ExampleClass, IExampleClass>();
    }
}

可以由主 class 調用。

public class ThisIsAnAzureFunction
{
    private readonly IExampleClass _exampleClass;

    public ThisIsAnAzureFunction(IExampleClass exampleClass)
    {
        _exampleClass = exampleClass;
    }

    [FunctionName("SomeAzureFunctionName")]
    public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {
        try
        {
            //Try some stuff
        }
        catch (Exception exception)
        {
            //Log some stuff
            log.LogError(exception);
            throw;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM