[英]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.