簡體   English   中英

在Azure函數v2中添加中間件等

[英]Adding middleware or alike in Azure functions v2

我需要向我的日志記錄上下文中添加correlationId,並在我的MVC項目中通過向項目中添加CorrelationId nuget並設置其中間件來做到這一點,但是在Azure函數中卻無法做到這一點。

我已經使用依賴注入加載了ICorrelationContextAccessor,然后像這樣設置我的correlationId:

    [FunctionName("func1")]
    public async Task Run([ServiceBusTrigger("mytopic", "MySubscription", Connection = "ServiceBusConnectionString")]Message message)
    {
        _correlationContextAccessor.CorrelationContext = _correlationContextFactory.Create(message.CorrelationId, "X-Correlation-ID");
        _logger.LogInformation($"C# ServiceBus topic trigger function processed message: {message.MessageId}, {Encoding.UTF8.GetString(message.Body)}");

它工作正常,我在下面的日志行以及該函數的服務中看到我的correlationId。 我唯一缺少的是我有關於該函數的開始和結束的日志,而該日志仍然沒有correlationId,這是有道理的,因為當該函數想要記錄它已收到未設置correlationId的消息時,就會記錄該日志。

簡短的版本是,您無法使用內置綁定影響在函數運行之前運行的日志記錄代碼。

您將無法更改該第一條“ C#計時器觸發函數已處理的消息”,因為此時尚未讀取該消息,這與嘗試在讀取MVC項目中獲取相關ID相同傳入的HTTP請求。

您可以通過創建自定義綁定 ,在首次收到消息后立即添加日志記錄。 我鼓勵您仔細考慮是否值得構建和維護自定義綁定,以便更快地進行日志記錄設置。

暫無
暫無

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

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