簡體   English   中英

將日志記錄上下文添加到所有 Azure Function 日志

[英]Add logging context to all Azure Function logs

默認情況下,Azure Functions 會將日志記錄上下文數據添加到所有日志。 是否可以添加其他要全局記錄的上下文項? 具體來說,我想添加全局數據,例如內部版本號。 我找不到任何不需要第三方日志框架(如 Serilog)的鈎子,但顯然支持是存在的。

您可以創建一個自定義ITelemetryInitializer來添加其他屬性。

在這里,我創建了一個名為BuildNumber的應用程序設置:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "APPINSIGHTS_INSTRUMENTATIONKEY": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx",
    "BuildNumber": "X.X.X"
  }
}

TelemetryInitializer 將從配置中獲得額外的屬性。

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.Configuration;
using System;
...
public class AdditionalPropertyTelemetryInitializer : ITelemetryInitializer
{
    private readonly IConfiguration _configuration;

    public AdditionalPropertyTelemetryInitializer(IConfiguration configuration)
    {
        _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
    }

    public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;

        // Here we filter on request telemetry
        if (requestTelemetry == null) return;

        requestTelemetry.Properties.Add("BuildNumber", _configuration["BuildNumber"]);
    }
}

最后一件事是注冊 TelemetryInitializer:

using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(FunctionApp1.Startup))]
namespace FunctionApp1
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddSingleton<ITelemetryInitializer, AdditionalPropertyTelemetryInitializer>();
        }
    }
}

我現在可以在應用洞察遙測上看到 BuildNumber: 在此處輸入圖像描述

暫無
暫無

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

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