Konuyu Açan
#1
Bir isteğin hangi log satırlarını ürettiğini takip etmek için requestId’yi her fonksiyona parametre olarak geçirmek bir süre sonra yorucu oluyor. Node.js’te AsyncLocalStorage bu işi sadeleştirebiliyor; ama kapsamı ve sınırları konusunda birkaç noktayı netleştirmek istiyorum.
İstek bağlamı: Gelen isteği bir bağlam içinde çalıştırıp requestId’yi orada saklamak, aynı asenkron akışta çağrılan servis ve loglama kodlarının bu değere erişmesini sağlıyor. Örneğin:
Alt tarafta ile okunabiliyor. Böylece her servis metoduna ayrıca requestId geçirmek gerekmiyor. Yine de bağlam yokken çalışan kodda değerinin bulunmayabileceğini hesaba katmak gerekiyor.
Sınırlar: Zamanlayıcılar ve yaygın Promise akışları genellikle bağlamı korusa da, her özel callback düzeninde bunu varsaymak istemiyorum. Worker thread veya ayrı bir süreç ise kendi başına aynı bağlamı devralmıyor; gerekli requestId gibi alanları mesajın parçası olarak açıkça iletmek gerekiyor.
Bir de testlerde birbirine paralel istekler çalıştırıldığında bağlamların karışmadığını doğrulamak önemli görünüyor. Siz AsyncLocalStorage’ı üretimde log korelasyonu için kullanıyor musunuz; özel callback’lerde ya da testlerde karşılaştığınız bir bağlam kaybı oldu mu?
İstek bağlamı: Gelen isteği bir bağlam içinde çalıştırıp requestId’yi orada saklamak, aynı asenkron akışta çağrılan servis ve loglama kodlarının bu değere erişmesini sağlıyor. Örneğin:
KOD
1als.run({ requestId }, () => handler(req, res));Alt tarafta
KOD
1als.getStore()?.requestIdKOD
1getStore()Sınırlar: Zamanlayıcılar ve yaygın Promise akışları genellikle bağlamı korusa da, her özel callback düzeninde bunu varsaymak istemiyorum. Worker thread veya ayrı bir süreç ise kendi başına aynı bağlamı devralmıyor; gerekli requestId gibi alanları mesajın parçası olarak açıkça iletmek gerekiyor.
Bir de testlerde birbirine paralel istekler çalıştırıldığında bağlamların karışmadığını doğrulamak önemli görünüyor. Siz AsyncLocalStorage’ı üretimde log korelasyonu için kullanıyor musunuz; özel callback’lerde ya da testlerde karşılaştığınız bir bağlam kaybı oldu mu?